小ネタを少々
トップページで表示される記事一覧では、アイキャッチ画像、タイトル、投稿日、投稿者、カテゴリ、記事の抜粋がそれぞれに表示されます。これはテーマオリジナル関数である「oblique_posted_on()」により処理されていています。それぞれにリンクが貼られていて、アイキャッチ画像、タイトル、投稿日はその記事へのリンク、投稿者とカテゴリはそれぞれのページへのリンクです。この関数は記事を開いた時にも使用されており、記事のアイキャッチ画像、タイトル、投稿日、投稿者、カテゴリを表示します。この時には投稿日、投稿者、カテゴリがリンクとなっています。
今回はこの記事を開いた時の「投稿日」からのリンク先を変更します。オリジナルの関数では投稿日は記事へのリンクとなっているので、記事を開いている時にその記事へリンクするのは無意味です。そこで投稿月のアーカイブへリンクする仕様へ変更したいと思います。画像の左下のリンク先に注目ください。投稿日へカーソルを合わせた時の表示ですが、記事へのリンクとなっています。
まずはオリジナル関数の86行目付近を確認します。
$posted_on = sprintf( /* translators: Post date */ _x( '%s', 'post date', 'oblique' ), '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>' );
「get_permalink()」が記事へのリンクとなるので、ここを該当月のアーカイブへのリンクとするため「get_link_month()」へ変更します。必要な引数は$yearと$monthです。get_the_time()関数で記事の年月を取得します。引数の「Y」と「m」はそれぞれ「西暦4桁」「2桁月(“04″など)」を意味します。
$year = get_the_time( Y, $post ); $month = get_the_time( m, $post ); $posted_on = sprintf( /* translators: Post date */ _x( '%s', 'post date', 'oblique' ), '<a href="' . esc_url( get_month_link( $year, $month ) ) . '" rel="bookmark">' . $time_string . '</a>' );
トップページの一覧画面ではオリジナル関数も使用するので今回は「oblique_posted_on2()」関数を追加するだけでオリジナルとの入れ替えなどの処理は不要です。子テーマの「inc/template-tags.php」へ追加します。
実装結果は実際にアクセスして確かめて下さい。記事を開いた後「投稿日」をクリックすると該当月のアーカイブページへリンクしているはずです。画像の左下にご注目ください。投稿日へカーソルを合わせた時の表示ですが、一覧表示の時(記事へのリンク)と違いリンク先が「2017/10」となっています。
新しく作る「oblique_posted_on2()」関数は、オリジナルの「oblique_posted_on()」関数をコピーして上述の該当する部分のみを変更して作成します。作成する先は子テーマ側の「inc/template-tags.php」です。