SANGOで固定ページをホーム固定する方法まとめ
mame

type="card"を使用した場合でも投稿日時を表示したい

[catpost type=”card2″~~~を使用した場合、投稿日時が表示されますが、
[catpost type=”card”~~~を使用した場合、投稿日時が表示されないかと思います。

type=”card”でも投稿日時を表示する方法はありますでしょうか。

また、[catpost type=”card”~~~を使用した場合、レスポンシブで2列~1列の表示になるかと思います。
表示サイズを小さくして3列表示にする方法はありますでしょうか。
以下のショートコートで試してみましたが駄目でした。。。
[yoko3 responsive][cell][catpost type="card" num="6"][/cell][/yoko3]

ご迷惑おかけいたしますが、ご教授いただけると助かります。

コメントへの回答
サルワカくん
2019/04/12

【追記】
v1.8.4〜ショートコードにis_date=1というオプションを追加すれば、日付が表示されるようにしました(詳細)。


type="card"の関連記事リンクに日付をのせるためには、ショートコードを作り直す必要がありますね…。

以下のコードをfunctions.phpに貼り付けると[my-catpost]のショートコードで日付つきのcardタイプの関連記事が好きな数だけ出力できるようになります。

/*********************
オリジナルのカードリンクを好きな数だけ出力するショートコードを作成
*********************/
add_shortcode('my-catpost', 'sng_output_original_cards_by');
function sng_output_original_cards_by($atts)
{
  $num = isset($atts['num']) ? esc_attr($atts['num']) : '4';
  $catid = isset($atts['catid']) ? explode(',', $atts['catid']) : null;
  $notin = isset($atts['notin']) ? explode(',', $atts['notin']) : null;
  $orderby = isset($atts['orderby']) ? $atts['orderby'] : 'date';
  $order = isset($atts['order']) ? ($atts['order']) : "DESC";

  if ($catid) {
    $output_posts = get_posts(array(
      'category__in' => $catid,
      'numberposts' => $num,
      'orderby' => $orderby,
      'order' => $order
    ));
  } else {
    $output_posts = get_posts(array(
      'category__not_in' => $notin,
      'numberposts' => $num,
      'orderby' => $orderby,
      'order' => $order
    ));
  }
  $output = "";
  foreach ($output_posts as $post) {
    $output .= sng_original_card_link(array('id' => $post->ID));
  }
  return '<div class="catpost-cards flex flex-wrap space-between">'. $output .'</div>';
}

/*********************
1つのオリジナルカードを出力する関数を作成(上の関数から呼び出す)
 *********************/
add_shortcode('my-card-link', 'sng_original_card_link');
function sng_original_card_link($atts)
{
  $id = isset($atts['id']) ? esc_attr($atts['id']) : null;
  $output = '';
  if ($id) {
    $ids = (explode(',', $id));
  }
  $target = isset($atts['target']) ? ' target="_blank"' : "";
  if (isset($ids)) {
    foreach ($ids as $eachid) {
      $img = (get_the_post_thumbnail($eachid)) ? get_the_post_thumbnail($eachid, 'thumb-520') : '<img src="' . featured_image_src('thumb-520', $eachid) . '">';
      $url = esc_url(get_permalink($eachid));
      $title = esc_attr(get_the_title($eachid));
      $time = get_the_time('Y.m.d', $eachid);
      $icon_name = get_option('use_fontawesome4') ? '<i class="fa fa-clock-o"></i>' : '<i class="fas fa-clock"></i>';
      if ($url && $title) {
        $output .= <<<EOF
      <a class="c_linkto" href="{$url}"{$target} rel="nofollow">
        <span>{$img}</span>
        <span class="c_linkto_text">
          <time class="longc_time dfont">{$icon_name} {$time}</time>
          <span>{$title}</span>
        </span>
      </a>
EOF;
      } //endif
    } //endforeach
  } else { $output = '関連記事のIDを正しく入力してください';}
  return $output;
}
//END 1つのカードを出力する関数

PCで3列で表示するためには以下のようなCSSを子テーマのstyle.cssに追加し、キャッシュを削除すれば良いかと思います。

@media only screen and (min-width: 768px) {
  .catpost-cards .c_linkto {
     width: 32%;
  }
}

よろしくお願いします。

mame
2019/04/12

お忙しいところ早速のご返信、コードの修正方法のご教示ありがとうございます。
試したところ無事に反映されました。
本当に助かりました。ありがとうございました。
SANGOを購入してよかったです。
今後とも大切に使用させていただきます。

サルワカくん
2019/04/12

いえいえ、うまくいったようで良かったです!
ご報告ありがとうございました。