急遽テーマを変更することになり、そのついでに行ったカスタマイズをメモしておきます。
内容はずっとやりたかったカスタムフィールド(投稿編集画面の下の方)の設置。
カスタムフィールドを設置してSEO系プラグインを外しました。
こんな感じのものを設置。
これでSEO系プラグインを入れずに、SEOタイトル・説明文、noindexの設定を出来るようになりました。
目次
function.phpにコードを追加
// カスタムフィールド追加 add_action('admin_menu', 'add_custom_fields'); add_action('save_post', 'save_custom_fields'); function add_custom_fields() { add_meta_box( 'my_sectionid', 'SEO対策', 'my_custom_fields', 'post'); } function my_custom_fields() { global $post; $seo_title = get_post_meta($post->ID,'seo_title',true); $meta_description = get_post_meta($post->ID,'meta_description',true); $noindex = get_post_meta($post->ID,'noindex',true); if($noindex==1){ $noindex_c="checked";} else{$noindex_c= "/";} echo '<p>※フォームは横いっぱいに入力して30文字</p>'; echo '<p>SEOタイトル(30文字程度)<br />'; echo '<input type="text" name="seo_title" value="'.esc_html($seo_title).'" size="59" /></p>'; echo '<p>SEO説明文(PC120文字程度、スマホ50文字程度)<br />'; echo '<input type="text" name="seo_description" value="'.esc_html($seo_description).'" size="59" /></p>'; echo '<p>低品質コンテンツをnoindexにする場合はチェック<br />'; echo '<input type="checkbox" name="noindex" value="1" ' . $noindex_c . '> noindex</p>'; } // カスタムフィールドの値を保存 function save_custom_fields( $post_id ) { if(!empty($_POST['seo_title'])) update_post_meta($post_id, 'seo_title', $_POST['seo_title'] ); else delete_post_meta($post_id, 'seo_title'); if(!empty($_POST['meta_description'])) update_post_meta($post_id, 'meta_description', $_POST['meta_description'] ); else delete_post_meta($post_id, 'meta_description'); if(!empty($_POST['noindex'])) update_post_meta($post_id, 'noindex', $_POST['noindex'] ); else delete_post_meta($post_id, 'noindex'); }
まずは、function.phpに上記コードを追加します。
SEO説明文を入力する枠は、はじめ<textarea>で設置したんですが、<textarea>だと上手く値の保存が出来なかったので、渋々<input>にしました。
<textarea name="meta_description" value="'.esc_html($meta_description).'" rows="4" cols="58" wrap="hard"></textarea>
↓
<input type="text" name="seo_description" value="'.esc_html($seo_description).'" size="59" />
header.phpにコードを追加
次に、header.phpの<head></head>内に以下のコードをそれぞれ入力。
<!-- SEOタイトル --> <title> <?php if(is_front_page()): // トップページ ?> <?php bloginfo( 'name' ); ?>|海外旅行・世界一周・WordPressについてのブログ <?php elseif(is_single()): // 投稿ページ ?> <?php $custom_fields = get_post_meta( $post->ID, 'seo_title', true ); if(empty( $custom_fields ) === false){ ?> <?php $key="seo_title"; echo get_post_meta($post->ID, $key, true); ?> <?php } else { ?> <?php wp_title(''); ?> <?php } ?> <?php elseif(is_page()): // 固定ページ ?> <?php wp_title(''); ?> <?php elseif (is_category()): // カテゴリーページ ?> <?php wp_title( 'の記事一覧|', true, 'right' );?> <?php bloginfo( 'name' ); ?> <?php elseif (is_tag()): // タグページ ?> <?php wp_title( 'の記事一覧|', true, 'right' );?> <?php bloginfo( 'name' ); ?> <?php elseif(is_404()): // 404ページ ?> <?php wp_title( '|', true, 'right' );?> <?php bloginfo( 'name' ); ?> <?php else: // その他ページ ?> <?php wp_title( '|', true, 'right' );?> <?php bloginfo( 'name' ); ?> <?php endif; ?> </title>
<!-- SEO説明文 --> <?php if(is_front_page()): // トップページ ?> <meta name="description" content="<?php bloginfo( 'description' ); ?>" /> <?php elseif(is_single()): // 投稿ページ ?> <?php $custom_fields = get_post_meta( $post->ID, 'meta_description', true ); if(empty( $custom_fields ) === false){ ?> <meta name="description" content="<?php $key="meta_description"; echo get_post_meta($post->ID, $key, true); ?>"> <?php } else { ?> <?php } ?> <?php else: // その他ページ ?> <?php endif; ?>
<!-- noindex設定 --> <?php if(is_home()): // トップページ ?> <meta name="robots" content="index, follow" /> <?php elseif(is_single()): // 投稿ページ ?> <?php if(get_post_meta(get_the_ID(),'noindex',true)==1){ ?><meta name="robots" content="noindex"><?php } ?> <?php elseif(is_page()): // 固定ページ ?> <meta name="robots" content="noindex, follow" /> <?php elseif (is_category()): // カテゴリーページ ?> <meta name="robots" content="index, follow" /> <?php elseif (is_tag()): // タグページ ?> <meta name="robots" content="noindex, follow" /> <?php elseif(is_404()): // 404ページ ?> <meta name="robots" content="noindex, follow" /> <?php else: // その他ページ ?> <meta name="robots" content="noindex, follow" /> <?php endif; ?>
ついでにページの種類によって、どのような設定にするのかも書き込みました。
以上で、カスタムフィールドにSEO設定を追加出来ました。
コメントする