functions.phpに追加するスニペット色々

WordPressのテーマを一から作成する際によく使うコードスニペットの覚え書き。

ほぼ毎回入れるもの

// generator非表示
if ( has_action( 'wp_head', 'wp_generator' ) )
	remove_action( 'wp_head', 'wp_generator' );

▲セキュリティ対策に、ソース内からWordPressのバージョンの表示を取り除きます。

// アイキャッチを使用
if ( function_exists( 'add_theme_support' ) )
	add_theme_support( 'post-thumbnails' ); 

▲アイキャッチ画像をテーマに反映させるには、この記述が必要。

// 固定ページではビジュアルエディタを使用しない
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' );

▲固定ページの本文内に直接PHPプログラムを書く場合や、緻密なコーディングを行う必要がある場合に、ビジュアルエディタでタグが自動的に書き換えられることを防ぐのが目的。
記事個別に設定したい場合はこちら

// ビジュアルエディタのCSS変更
add_editor_style( array('css/editor-style.css') );

▲公開ページとビジュアルエディタのスタイルを共有させれば、表示を確認しながら記事作成ができて便利です。

固定ページのテンプレート用

// 親ページのスラッグを取得
function is_parent_slug() {
	global $post;
	if ($post->post_parent) {
		$post_data = get_post($post->post_parent);
		return $post_data->post_name;
	}
}

▲ページごとに表示を変える分岐処理にはis_page(‘ページのスラッグ’)を使いますが、その下層の大量のサブページを一括で分岐処理したい場合には「is_parent_slug()==’親ページのスラッグ’」と使用します。

投稿ページのテンプレート用

// カテゴリースラッグ取得
function get_cat_slug() {
	$cat = get_the_category();
	$slug = $cat[0]->slug;
	return $slug;
}

▲カテゴリーごとにデザインを変える分岐処理をしたい場合に「get_cat_slug()==’カテゴリーのスラッグ’」と使用します。

// 複数カテゴリースラッグ取得
function get_all_cat_slug() {
    $cats = get_the_category();
    $slug = '';
    foreach ($cats as $cat) {
        $slug .= ' single-'.$cat->slug;
    }
    return $slug;
}

▲投稿が複数カテゴリーに属する場合に、bodyタグに「body_class( get_all_cat_slug() )」といった感じで使用します。

// 親カテゴリーのスラッグ取得
function get_parent_cat_slug() {
	$cats = get_the_category();
	$cat = $cats[0];
	if($cat->parent) {
		$parent = get_category($cat->parent);
		return $parent->slug;
	} else {
		return $cat->slug;
	}
}

▲親カテゴリーを元にデザインを変える分岐処理をしたい場合に「get_parent_cat_slug()==’親カテゴリーのスラッグ’」と使用します。

デザインに応じて

add_image_size( 'thumb200x200', 200, 200, true );

▲画像アップロードに自動生成する画像サイズを追加します。パラメータは順に「画像の名前」「幅」「高さ」「トリミング(しない場合はfalse)」です。
カスタム投稿タイプ別に画像サイズを設定したい場合はこちらの記事を参照してください。

// 抜粋からpタグを取り除く
remove_filter('the_excerpt', 'wpautop');

▲トップページにのトピックスエリアにインラインで抜粋をレイアウトしたい際など、デフォルトで抜粋に含まれる改行(p)タグが不都合な場合に。

<title>タグの出力

※WordPress 4.4〜

add_theme_support( 'title-tag' );

▲wp_head()に<title>タグを自動挿入

// ドキュメントタイトルの区切り文字を「|」に変更
add_filter( 'document_title_separator', function ( $sep ){
	$sep = '|';
	return $sep;
}, 10, 2 );

▲<title>の区切り文字をデフォルトの「-」から「|」に変更

// サイトトップページのドキュメントタイトルからdescriptionを取り除く
add_filter( 'pre_get_document_title', function ( $title ) {
	if(is_front_page()){
		$title = get_bloginfo();
	}
    return $title;
}, 10, 2 );

▲サイトトップページの<title>からキャッチフレーズ(description)を除外

その他

その他とりあえず覚え書き。

// 自動保存を停止
function disable_autosave() {
	wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disable_autosave' );
// All in One Seo Pack のHTMLコメントを削除
add_action( 'wp_head', 'wp_head_buffer_start', 0 );
add_action( 'wp_head', 'wp_head_buffer_end', 100 );
function wp_head_filter($buffer) {
  $buffer = preg_replace( '/^.*<!--.*all in one seo pack.*-->.*\r?\n/im', '', $buffer );
  return $buffer;
}
function wp_head_buffer_start() {
  ob_start( 'wp_head_filter' );
}
function wp_head_buffer_end() {
  ob_end_flush();
}
// テーマでDashiconsを使用する
add_action( 'wp_print_styles', 'load_dashicons');
function load_dashicons() {
	wp_enqueue_style('dashicons');
}

▲使用する際は<span class=”dashicons dashicons-wordpress”>WordPress</span>のようにclass属性を追加。Dashiconsの一覧はこちら

PR

DO WP 管理人