BLOG

僕がよく使うfunctions.phpのこと

| WordPress

WordPressのテーマを作っていく上で外せないのがfunctions.phpです。
ちょっと書くだけで、様々なことができちゃうんです。
そんな、functions.phpについて、僕がよく使ってるものをまとめてみました。

functions.phpじゃなくて、プラグインで出来るやん。バージョンもアップしてくれるし、そっちのが良くない?って思われるかもしれません。たしかに、プラグインは便利です。functions.phpはピンポイントの機能を使うことで、プラグインだとオーバースペックになってしまい、そのせいで処理が重くなってしまう場合もあります。ですので、どっちでするかは、考えてみてもいいかもしれませんね。

WordPressで内に出力されてしまうタグを削除

remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rel_canonical');
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'rest_output_link_wp_head');

function disable_emoji() {
  remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
  remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
  remove_action( 'wp_print_styles', 'print_emoji_styles' );
  remove_action( 'admin_print_styles', 'print_emoji_styles' );
  remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
  remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
  remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'disable_emoji' );

内に出力される、バージョン情報とか、絵文字とかのを消すことができます。
いらないタグはあっても、速度低下の原因になるので、必要なもの以外は消しちゃいましょう。

ビジュアルエディターにスタイルを適用

add_editor_style("editor-style.css");

テーマで装飾しても、記事を書く時に同じように見えなかったりするので、ビジュアルエディタにもスタイルを適用するとプレビューしなくてもザックリと確認できてGoodかも。

タイトルタグ関連

// wp_header()にタイトルタグを出力
function titles(){
  add_theme_support('title-tag');
}
add_action( 'after_setup_theme', 'titles' );

// タイトル内のセパレートを「-」を「|」に変更する
function nendebcom_title_separator( $sep ){
    $sep = '|';
    return $sep;
}
add_filter( 'document_title_separator', 'nendebcom_title_separator' );

wp_header(); にタイトルを出力できます。あと、デフォルトだとブログ名とページタイトルのセパレートは「-」ですが、自由に変更することが出来ますので、こちらも覚えておくと良いかもですね。
タイトルの方は「All in One SEO」ってプラグインを使ってカスタムすることも出来るので、いい感じの方で!

管理画面のサイドメニューのカスタマイズ


// 管理画面サイドメニュー順番を管理 function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // ダッシュボード 'separator1', // 隙間その1 'edit.php?post_type=***', // カスタム投稿タイプの指定 'edit.php?post_type=page', // 固定ページ 'edit.php', // 投稿 'upload.php', // メディア 'separator2', // 隙間その2 'tools.php', // ツール 'link-manager.php', // リンク 'edit-comments.php', // コメント 'themes.php', // 外観 'users.php', // ユーザー 'options-general.php', // 設定 'plugins.php', // プラグイン 'separator-last', // 隙間その3 ); } add_filter('custom_menu_order', 'custom_menu_order'); add_filter('menu_order', 'custom_menu_order');

管理画面でカスタム投稿とか追加したときに順番を変えたほうが見やすかったりしませんか?そんな時にこれを使って、順番を変更できます。こちらも、プラグインを使って出来たりますね。

固定ページのみビジュアルエディタを無効

// 固定ページのみビジュアルエディター無効
function disable_visual_editor_in_page(){
  global $typenow;
  if( $typenow == 'page' ){
    add_filter('user_can_richedit', 'disable_visual_editor_filter');
  }
}
function disable_visual_editor_filter(){
  return false;
}
add_action( 'load-post.php', 'disable_visual_editor_in_page' );
add_action( 'load-post-new.php', 'disable_visual_editor_in_page' );

エディタをビジュアルとテキスト行ったり来たりして微妙にタグが変形しちゃったりする場合があったります。そうなっちゃうとガンガンに崩れちゃうから、そのへんの対策にしてみてもいいかもですね。

the_excerpt()関連

// the_excerpt() ...を消す
function new_excerpt_more($more) {
  return '';
}
add_filter('excerpt_more', 'new_excerpt_more');

//制限する文字数の設定
function my_excerpt_length($length) {
  return 80;
}
add_filter('excerpt_length', 'my_excerpt_length');

リストとかで概要を引っ張ってくるタグの途中で切れたときの文末につく…を消すのと、制限する文字数の設定です。
これは、結構使うことが多いですね。ぼくはデフォルトでぶっこんでます。

アイキャッチ画像など、画像関連

// アイキャッチ画像を使えるようにする
add_theme_support( 'post-thumbnails' );

// 画像サイズの追加をする
add_image_size('blog_thumb', 640, 480, true );

アイキャッチはデフォルトでは使えないはず。でこのタグを使って使えるようにカスタマイズ。これもデフォルトでぶっこんでる。
画像サイズの追加に関しては、WordPressの管理画面のメディアで3つサイズ設定できますが、それだけじゃ足らん!って人は使ってみてはどうでしょうか。

最後に

まだまだ、ピンポイントとかで使う場面はたくさんありますが、よく使っているものを紹介してみました。functions.phpを覚えると使いまわせるので便利です。簡単にでも覚えておくとよいと思います。