【WordPress】function.phpに書いていること | Design Studio 有限会社シアン

有限会社シアン

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');
topへ