WordPressテーマSANGOの質問

関連記事のショートコードのリンク先をURLで指定したい

アバター
Taroimo Panda

関連記事を[kanren id="投稿ID"]ではなく[kanren id="URL"]で挿入したいのですが、何かよい方法などないでしょうか?
WordPressのplugin「Pz-LinkCard」からSANGOのブログカードに移行したいのですが。

サイト内の全記事の投稿ID/カテゴリーIDを一覧で表示する方法
コメントへの回答
サルワカくん
サルワカくん
2017/11/02

なるほど…。作ってみました。まず、子テーマのfunctions.phpに以下のコードを貼り付けてください。


//関連記事をURLで
add_shortcode('kanrenl','sng_entry_linkl');
function sng_entry_linkl($atts) {
  $output = '';
  $url = isset($atts['url']) ? esc_attr($atts['url']) : null;
  $postid = url_to_postid( $url );
  if(isset($postid)) {
    $img = (get_the_post_thumbnail($postid)) ? get_the_post_thumbnail($postid, 'thumbnail') : '<img src="'.featured_image_src('medium').'">';
    $url = esc_url(get_permalink($postid)); //URL
    $title = esc_attr(get_the_title($postid));
    if($url && $title) {
      $output .= <<<EOF
      <a class="linkto table" href="{$url}">
              <figure class="tbcell">{$img}</figure>
              <div class="tbcell">{$title}</div>
            </a>
EOF;
  }
  } else {$output = '関連記事のIDを正しく入力してください';}
      return $output;
}
//END 関連記事をURLで

これで準備は完了です。[kanrenl url="投稿ページのURL"]で関連記事のショートコードが挿入されます。
ショートコード名が変わっていることにご注意ください。
・「kanren」ではなく「kanrenl」
・「id」ではなく「url」
です。
また、一度に挿入できるのは1記事のみです。カンマ区切りの複数URL指定はできないことにご注意ください。

アバター
Taroimo Panda
2017/11/03

ありがとうございます。
簡単に変更できました!