WordPressテーマSANGOの質問

[card id="投稿ID"]で表示したカードのタイトルの上に抜粋を表示したい

アバター
nan

[card id="投稿ID"]で表示したカードのタイトルの上に
抜粋のテキストを表示したいと考えております。
[card2 id="投稿ID"]で表示した場合の日付のようなイメージです。
なんとか表示させることはできませんでしょうか。

https://saruwakakun.com/sango/comments?id=4352
を参考にチャレンジしてみたのですが、実現できませんでした。

お忙しいところ大変恐れ入りますが、何卒よろしくお願い致します。

SANGO
SANGO 質問ガイドライン
コメントへの回答
サルワカくん
サルワカくん
2020/06/25

[card]ショートコードのコードは/library/functions/style-shortcode.phpに書かれています。
具体的にはsng_card_linkという関数を子テーマのfunctions.phpで上書きすればOKです。

  /* [card]ショートコードを上書き */
function sng_card_link($atts) {
    $output = '';
    $ids = isset($atts['id']) ? explode(',', $atts['id']) : null;
    if(!$ids) return "";
    $target = isset($atts['target']) ? ' target="_blank"' : "";
    $is_date = isset($atts['is_date']) && $atts['is_date'];

    foreach ($ids as $eachid) {
      list($url, $title, $img, $date) = sng_get_entry_link_data($eachid, 'thumb-520', $is_date);
      if ($url && $title) {
          $output .= <<<EOF
<a class="c_linkto" href="{$url}"{$target}>
  <span>{$img}</span>
  <span class="c_linkto_text">{$date}{$title}</span>
</a>
EOF;
      } // endif
    } // end foreach
    return $output;
  }

↑このコードはもとの関数のままですが、抜粋文を表示したい部分でget_the_excerpt()や、
get_post_meta($post->ID, 'sng_meta_description' true);(投稿ページに設定されたメタデスクリプション)を使うと良いと思います。

よろしくお願いします。

アバター
nan
2020/06/27

素早いご回答ありがとうございました。

本当に素人すぎて申し訳ありません。
私のスキルでは表示することができませんでした。
今回の場合、固定ページの抜粋文を表示させたいと思い。
fanctions.phpに
add_post_type_support( ‘page’, ‘excerpt’ );
の一文を追記し、抜粋欄を表示させて
そこに一文を追加しています。

教えていただいたsng_card_link関数内の
{$date}{$title}
の一行上に

と入れたりしてみたのですが、うまくいきません。
適当な文字列 ABC などを入れると表示されるので
場所はそこで良いような気がしています。

大変申し訳ありませんが、お助けいただけますと助かります。

サルワカくん
サルワカくん
2020/06/27
list($url, $title, $img, $date) = sng_get_entry_link_data($eachid, 'thumb-520', $is_date);

の下の行あたりに

$excerpt = get_the_excerpt($eachid);

というような行を追加すれば、$excerptという変数に抜粋文が入ります。
その上で抜粋文を挿入したい位置で{$excerpt}を使えばOKだと思います。
(スタイリングのためにspanやdivタグなどで囲って文字サイズや色を変えるのが良いですね)

よろしくお願いします。