BLOG
【WordPress】function.phpに書いていること
業務でWordPressサイトを制作するとき、function.php に記述する基本的な設定のメモです。
(1) 各投稿内でサイトのURL/テンプレート設置URLを取得する
投稿内でリンクを設定する際に、[url]/contact 等の記述が可能になり、特にテスト環境を設置している場合にURLの書き換えの必要がなく便利です。
// [url] と記述するとサイトのURLを取得
function shortcode_url() { return get_bloginfo('url'); } add_shortcode('url', 'shortcode_url');
// [temp_url] と記述するとテンプレートが設置されているURLを取得
function shortcode_templateurl() { return get_bloginfo('temp_url'); } add_shortcode('temp_url', 'shortcode_templateurl');
(2) descriptionタグを設定する
表示されているページがサイトのトップか、カテゴリアーカイブか、個別ページかそれぞれの性質に合わせて、タグの内容を切り替えます。
トップページならWordPress「一般設定」で指定したサイトの説明文を、カテゴリアーカイブではカテゴリの説明文を、各投稿では本文の抜粋を、抜粋がない場合は記事本文の冒頭100文字を取得して表示します。
function get_meta_description() {
global $post;
$description = "";
if ( is_home() ) {
$description = get_bloginfo( 'description' );
}
elseif ( is_category() ) {
$description = category_description();
}
elseif ( is_single() ) {
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
$description = strip_tags($post->post_content);
$description = str_replace("\n", "", $description);
$description = str_replace("\r", "", $description);
$description = mb_substr($description, 0, 100) . "...";
}
} else {
$description = get_bloginfo( 'description' );
}
return $description;
}
// header.phpでの表示設定
function echo_meta_description_tag() {
echo '<meta name="description" content="' . get_meta_description() . '" />' . "\n";
}
header.php には下記のスクリプトを記述します。
各テンプレートでこのheader.phpを読み込めば、 それぞれに合わせたdescriptionが表示されます。
<?php echo_meta_description_tag(); ?>
(3) 自動整形を無視する
がっちりデザインを固めてWordPressが自動的に挿入する<p>タグが邪魔になるときには、このコードを記述します。
remove_filter('the_content', 'wpautop');
ただし、すべての投稿で自動整形できなくなるため、ユーザーによっては運用が難しくなります。
指定の箇所のみ自動整形を無効にしたいときには、該当の箇所に下記を記述します。
// <?php the_content(); ?>の前に記述
<?php remove_filter ('the_content', 'wpautop'); ?>
(4) ダッシュボード画面にもFaviconを追加する
デフォルトでは、WordPressのダッシュボードは「W」マークのWordPressアイコンになっています。
公開用ページのFaviconがダッシュボードでも表示されるように設定しておきます。
function ad_favicon_dashboard() {
echo '<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">'; //Faviconを格納した場所のurl
}
add_action('admin_head', 'ad_favicon_dashboard');