web関連

【wordpress】アイキャッチがあったらアイキャッチを表示無かったらサイト共通画像表示するphp

【wordpress】アイキャッチがあったらアイキャッチを表示無かったらサイト共通画像表示するphp

アイキャッチを持ってる持っていない時の条件分岐が思ったよりシンプルにできるようになっていたのでメモ

アイキャッチ持っているかどうかの条件分岐

条件分岐

function.phpに記述

function get_thumb_img_url() {
  // アイキャッチ持ってる時
  if(has_post_thumbnail()) {
    // アイキャッチ画像のURLを取得して変数へ代入
    $thumb_img_url = get_the_post_thumbnail_url();
  }
  // アイキャッチ持っていない時
  else{
    // アイキャッチ無い時用の画像
    $thumb_img_url = "https://sample.com/images/ogp_img.png";
  }

  return $thumb_img_url;
}

出力方法

phpファイルに記述

<?php echo get_thumb_img_url(); ?>

こんな風に使ってる

<meta property="og:image" content="<?php echo get_thumb_img_url(); ?>" />

おまけ:wordpress4.4以下での書き方

wordpress4.4以降で上記で使っている「get_the_post_thumbnail_url」という一発でアイキャッチのurlを取得してくれる関数が出たのですが、サーバーがボロかったりして4.4以降にできない古い環境のサイトも考慮して古い方の書き方もメモ

function get_thumb_img_url() {
  // アイキャッチ持ってる時
  if(has_post_thumbnail()) {
    // アイキャッチ画像のURLを取得して変数へ代入
    $thumb_id = get_post_thumbnail_id($post_id); // id取得
    $thumb_img = wp_get_attachment_image_src($thumb_id, full); // アイキャッチの配列取得
    $thumb_img_url = $thumb_img[0]; // 配列から画像URL取得
  }
  // アイキャッチ持っていない時
  else{
    // アイキャッチ無い時用の画像
    $thumb_img_url = "https://sample.com/images/ogp_img.png";
  }

  return $thumb_img_url;
}

出力方法は一緒
でも、めんどくさいね

wordpress4.4以下とかあまりないだろうけど、サーバーのphpのバージョンが古い時用の記述
実際、お客さんでWordPress 3系がいるので念のためにね
「has_post_thumbnail」「get_post_thumbnail_id」「get_post_thumbnail_id」は3系からは標準っぽいので多分動く