functions.php

基本設定

// common - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
// アドミンバー非表示
add_filter('show_admin_bar', '__return_false');

// pタグ除去
remove_filter('the_content', 'wpautop');

// サムネイル有効化
add_theme_support( 'post-thumbnails' );

// <meta name=”generator”> 無効化
remove_action('wp_head','wp_generator');

// Windows Live Writer 無効化
remove_action('wp_head', 'wlwmanifest_link');

// RSD(Really Simple Discovery) 無効化
remove_action('wp_head', 'rsd_link');

// 絵文字の読み込みを無効化
remove_action('wp_head', 'print_emoji_detection_script', 7 );
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');

http://elsur.xyz/wordpress-functions-remove-filter

アイキャッチ画像サイズを指定

/* アイキャッチ画像サイズ  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
add_image_size('tmb_full', 700, 432, true); // ブログ用 サムネイル
add_image_size('tmb_min', 350, 216, true); // ナビゲーション用 サムネイル

functions.phpを分割

// functions.phpを分割 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
locate_template('tmp/functions/custom_post.php', true);

アドミンバーで不要な項目を非表示

// アドミンバーで不要な項目を非表示 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
function update_adminbar($wp_adminbar) {
  // 不要な項目を選択
  $wp_adminbar->remove_node('wp-logo');
  $wp_adminbar->remove_node('customize');
  $wp_adminbar->remove_node('comments');
  $wp_adminbar->remove_node('updates');
  $wp_adminbar->remove_node('search');
}
add_action('admin_bar_menu', 'update_adminbar', 999);

WPが生成するサイトマップを無効化

/* WPが生成するサイトマップを無効化  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
add_filter( 'wp_sitemaps_enabled', '__return_false' );

https://www.suzukikenichi.com/blog/how-to-disable-core-xml-sitemap-in-wordpress-5-5/

Contact Form 7 スパムメール対策

// Contact Form 7 スパムメール対策(本文に日本語が含まれていない場合はエラーを返す) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
function wpcf7_validate_spam_message( $result, $tag ) {
  $value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-message']));
  if (!empty($value)) {
    if (preg_match('/^[!-~]+$/', $value)) {
      $result['valid'] = false;
      $result['reason'] = array('your-message' => 'エラー:この内容は送信できません');
    }
  }
  return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_spam_message', 10, 2 );

https://kodocode.net/wordpress-plugin-contactform-secure/

下書きの固定ページを親ページに設定できるようにする

// 下書きの固定ページを親ページに設定できるようにする - - - - - - - - - - - - - - - - - - - - */
function add_private_draft($args) {
    $args['post_status'] = 'publish,private,draft';
    return $args;
}
add_filter('page_attributes_dropdown_pages_args', 'add_private_draft');

投稿RSSに固定ページやカスタム投稿を含める

/* 投稿RSSに固定ページやカスタム投稿を含める - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
add_filter( 'pre_get_posts', 'my_custom_posts_rss' );
function my_custom_posts_rss( $query ) {
if ( is_feed() )
$query->set( 'post_type', array( 'post', 'page', 'custom_posts' ) );
return $query;
}

アドミンバーに独自メニューを追加

// アドミンバー ////////////////////////////////////////////////////////////////////////////////////////////////////
function customize_admin_bar_menu($wp_admin_bar){
  //バーにメニューを追加
  $title = sprintf(
      '<span class="ab-label">%s</span>',
      '管理メニュー'//親メニューラベル
  );
  $wp_admin_bar->add_menu(array(
      'id'    => 'dashboard_menu',
      'meta'  => array(),
      'title' => $title
  ));
  //サブメニューを追加
  $wp_admin_bar->add_menu(array(
      'parent' => 'dashboard_menu', // 親メニューID
      'id'     => 'dashboard_menu-dashboard', // 子メニューID
      'meta'   => array(),
      'title'  => 'ダッシュボード', // ラベル
      'href'   => home_url('/wp-admin/')
  ));
  $wp_admin_bar->add_menu(array(
      'parent' => 'dashboard_menu', // 親メニューID
      'id'     => 'dashboard_menu-singles', // 子メニューID
      'meta'   => array(),
      'title'  => '投稿一覧', // ラベル
      'href'   => home_url('/wp-admin/edit.php')
  ));
  $wp_admin_bar->add_menu(array(
      'parent' => 'dashboard_menu', // 親メニューID
      'id'     => 'dashboard_menu-pages', // 子メニューID
      'meta'   => array(),
      'title'  => '固定ページ一覧', // ラベル
      'href'   => home_url('/wp-admin/edit.php?post_type=page')
  ));
  $wp_admin_bar->add_menu(array(
      'parent' => 'dashboard_menu', // 親メニューID
      'id'     => 'dashboard_menu-theme-editor', // 子メニューID
      'meta'   => array(),
      'title'  => 'テーマの編集', // ラベル
      'href'   => home_url('/wp-admin/theme-editor.php')
  ));
  $wp_admin_bar->add_menu(array(
      'parent' => 'dashboard_menu', // 親メニューID
      'id'     => 'dashboard_menu-csv_export', // 子メニューID
      'meta'   => array(),
      'title'  => 'CSVエクスポート', // ラベル
      'href'   => home_url('/wp-admin/tools.php?page=wp-csv-exporter')
  ));
  $wp_admin_bar->add_menu(array(
      'parent' => 'dashboard_menu', // 親メニューID
      'id'     => 'dashboard_menu-csv_import', // 子メニューID
      'meta'   => array(),
      'title'  => 'CSVインポート', // ラベル
      'href'   => home_url('/wp-admin/admin.php?import=csv')
  ));
}
add_action('admin_bar_menu', 'customize_admin_bar_menu', 100);

投稿編集画面にタグ一覧を表示しチェックボックス選択式にする

// 投稿画面にタグ一覧を表示しチェックボックス選択式にする
function re_register_post_tag_taxonomy() {
  $tag_slug_args = get_taxonomy('post_tag');
  $tag_slug_args->hierarchical = true;
  $tag_slug_args->meta_box_cb = 'post_categories_meta_box';
  register_taxonomy('post_tag', 'post', (array) $tag_slug_args);
}
add_action( 'init', 're_register_post_tag_taxonomy', 1 );

https://www.saka-en.com/wordpress/wordpress-tag-list-checkbox/

ai/psdファイルをアップロードできるようにする

/* ai/psdファイルをアップロードできるようにする  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
function upload_ai($mimes) {
    $mimes['ai'] = 'application/pdf';
    return $mimes;
}
add_filter('upload_mimes', 'upload_ai');

function allow_upload_psd( $mimes ) {
    $mimes['psd'] = 'image/vnd.adobe.photoshop'; 
    return $mimes;
}
add_filter( 'upload_mimes', 'allow_upload_psd' );