緊急事態宣言で外出自粛になりまして

閲覧数: 28(0)

せっかくのゴールデンウィークなのに、2年連続で緊急事態宣言下となり、外出自粛中。暇なので小ネタで遊ぶ。まずは前回の小ネタの確認を兼ねて、タイトルを長めにしてちょうど良いところで省略されるかの実験。たぶん大丈夫なはず。

記事が表示されるシングルページの下部に「関連記事」を表示している。現在の表示内容は、タイトル、サムネイル画像、投稿日、抜粋、本文へのリンクの順である。このうち、リンクはタイトル、サムネイル画像、本文へのリンクであり、全て記事本文へのリンクである。

記事ページの冒頭でタイトルと投稿日、投稿者を表示している部分では、投稿日のリンクは該当する月の一覧表示に変更している。オリジナルのコードでは投稿日のリンク先は自分のページというある意味ループした状態となっていたのを、その記事が書かれた月の一覧へと変更した。

今回はこの仕様を「関連記事」の中に適用しようというもの、前述のように、タイトル、サムネイル画像、投稿日の順に表示している、この投稿日を、現在のリンク無しから、記事が書かれた該当月の一覧表示へと変更する。テーマへの関数の追加で実現するので、記述する先はテーマ下のincにある「template-tags.php」である。このインクルードファイルはすでに子テーマで読み込みの設定がされているので、追加記述のみでテーマ全体で使用可能な関数が定義出来る。

記述する内容はだいたい以下の通り、実際には同名の関数が登録されているかどうか確認などがあるが、割愛。

function fotografie_posted_on3() {

    $time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
    if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
        $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
    }

    $time_string = sprintf( $time_string,
        esc_attr( get_the_date( 'c' ) ),
        esc_html( get_the_date() ),
        esc_attr( get_the_modified_date( 'c' ) ),
        esc_html( get_the_modified_date() )
    );

    $year = get_the_time( 'Y', $post );
    $month = get_the_time( 'm', $post );
    $posted_on = sprintf(
            /* translators: Post date */
            _x( '%s', 'post date', 'fotografie' ),
            '<a href="' . esc_url( get_month_link( $year, $month ) ) . '" rel="bookmark">' . $time_string . '</a>'
    );

    echo '<span class="posted-on">' . $posted_on . '</span>'; // WPCS: XSS OK.

}

エラーが無ければ、テーマ全体でこの関数が使えるようになるので、表示が必要なところへこの関数を挿入する。今回は関連記事プラグインの中へ記述することになる。24行目が追加したコードである。

add_action('related_post_loop_item_element_post_excerpt', 'related_post_loop_item_element_post_excerpt', 10, 2);

function related_post_loop_item_element_post_excerpt($loop_post_id, $elementData){

    $settings = isset($elementData['settings']) ?  $elementData['settings'] : array();

    //echo '<pre>'.var_export($elementData, true).'</pre>';
    $post_link = get_permalink($loop_post_id);
    $word_count = isset($elementData['word_count']) ? $elementData['word_count'] : 20;
    $read_more_text = !empty($elementData['read_more_text']) ? $elementData['read_more_text'] : __('Read more', 'related-post');
    $after_html = isset($elementData['after_html']) ? $elementData['after_html'] : '';
  
    $enable_stats = isset($settings['enable_stats']) ? $settings['enable_stats'] : 'disable';

    $post_link = ($enable_stats == 'enable') ? $post_link.'?related_post_from='.$loop_post_id : $post_link;

    $post = get_post($loop_post_id);
    $post_excerpt = $post->post_excerpt;
    $post_content = $post->post_content;
    $post_excerpt = !empty($post_excerpt) ? strip_tags($post_excerpt) : strip_tags($post_content);
    $post_excerpt = wp_trim_words( $post_excerpt , $word_count, ' <a '.apply_filters('related_post_element_link_attrs', 'post_excerpt', $elementData).' class="read-more" href="'.$post_link.'"> '.$read_more_text.'</a>' );

    ?>
    <div class="related_post_title"><?php fotografie_posted_on3() ?></div>
    <p class="excerpt post_excerpt">
        <?php echo $post_excerpt; ?>
    </p>
    <?php
}

隠し機能として、リンク付きではあるものの、デフォルトのリンク色ではなく、グレーアウトして一見するとリンクじゃないように見せかけるため、「related_post_title」のa要素に対して、以下の指定をする。

.related_post_title a {
	font-size: 14px;
	color: #999;
}

結果は下の関連記事のコーナーで確認のこと。

カテゴリーIT閑話, 公開タグ, , , ,
子テーマ化詳細

子テーマ化にあたって具体的に修正した部分の説明をします。まずは「header.php」から。サイトの  続きを読む

タイトルを抜粋する
blank

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

関連記事プラグイン
blank

脆弱性のため公開中止となったプラグインの代わりに選んだ、現在の「関連記事」用プラグインの設定を保存し  続きを読む

関連記事の大原則
blank

ググったりしてあるページにたどり着いた閲覧者に対して、それに関連する記事を提示して少しでもサイトの滞  続きを読む

関連記事
blank

Related Postsと言うプラグインで、関連記事をページ下部に表示しています。これまでは、Wo  続きを読む

テーマリニューアル2017
blank

すっかりご無沙汰してしまいました。 復帰記念に久しぶりにテーマを変更しました。今回使用するのは「ob  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください