投稿者を表示させたい
-
テーマ:Twenty Seventeenバージョン: 1.3
投稿ページでは日付の右に投稿者名も表示されますが、アーカイヴテンプレートで表示させたいということでしょうか。
「上手くいかなかった」具体的な経緯を説明下さい。前にも同じ箇所を見たように記憶しています。『個別投稿』で分岐されてますね。
<?php if ( 'post' === get_post_type() ) { echo '<div class="entry-meta">'; if ( is_single() ) { twentyseventeen_posted_on(); } else { echo twentyseventeen_time_link(); twentyseventeen_edit_link(); }; echo '</div><!-- .entry-meta -->'; };
説明不足ですみません。
“上手くいかなかった”というのは、非表示についての説明ページを見ながら、cssファイルをいくつか見たのですが、書き換えの方法も分からず、投稿者を表示させることが上手くいかなかったという意味です。個別ページ、アーカイブページ、カテゴリーページ、いずれも投稿者が表示されておりません。
固定ページは出さなくて良いのですが、投稿については、誰が投稿したか分かるようにしたく、投稿は一律出るように出来たらと思っていますので、可能なのであれば教えていただけると助かります。
引用の通り、『個別投稿』で投稿者
twentyseventeen_posted_on();
を取得する仕組みになっているので、cssファイルは関係しません。
アーカイブページ、カテゴリーページでは、投稿者名は表示されませんが、個別投稿では表示されます。
当然、固定ページでは表示されません。勿論プラグインは全停止していますね。プラグインを全て停止してみましたが、表示はされません。
こちらはCSSファイルの一部という訳ではなかったのですね。すみません。他人からの引き継ぎなので、もしかするとデフォルト設定ではない可能性がありますが、現状は個別投稿でも表示がされておりません。
アーカイブページ、カテゴリーページ、個別投稿で表示するには、該当するそれぞれのCSSの一部を書き換えもしくは追記するか、テーマの追加CSSに追記すれば良いのかと思ったのですが、全然的外れでしょうか?
「他人からの引き継ぎなので、もしかするとデフォルト設定ではない可能性がありますが、」ということ、現在の Twenty Seventeen がカスタマイズされていると考えられますね。チャイルドテーマでセットされていませんか。
元々作った方に確認したところ、チャイルドテーマは作っておらず、デフォルトから設定を変えていないということでした。
別のドメインのホームページのテーマを、Twenty Seventeenに変更したところ、そちらでも投稿者が表示されておりませんでした。CGさんは表示されているとのことで、何が違うのか分からない状況です。
cssファイルが関係しないとすると、私の知識では難しいかもしれないですが、強制的に表示させるような方法はないものでしょうか?
横から失礼します。CGさんのご指摘の通り、個別投稿では日付、投稿者が表示されますが、サイトで最初に表示される記事一覧だと日付だけですね。
おそらくrasuta2さんのおっしゃっているのは、このフロントページの表示なのだと思います。カスタマイズでフロントページを「投稿」にしているのですよね。ご要望に添える変更か分かりませんが、以下のように php ファイルを書き換えることで表示するようになります。必ずチャイルドテーマを作って、そちらを修正して下さい。対象となるファイルは一つだけで
/wp-content/themes/twentyseventeen/template-parts/post/content.php
です。CGさんが上で書かれている部分があるファイルです。上から24行目あたりのこの部分を
echo '<div class="entry-meta">'; // if ( is_single() ) { twentyseventeen_posted_on(); // } else { // echo twentyseventeen_time_link(); // twentyseventeen_edit_link(); // }; echo '</div><!-- .entry-meta -->';
こんな感じに該当する行頭にスラッシュを二つ入れてコメントアウトしてしまうだけです。twentyseventeen_posted_on() が常に呼ばれるようになる変更です。
元は記事一覧では twentyseventeen_time_link() と twentyseventeen_edit_link() だけを呼んで個別投稿の時は twentyseventeen_posted_on() を呼ぶ仕組みでした。表示がうまく変更されたのを確認したら、コメントアウトした行そのものを削除してもいいですが、後で元にもどす、別の修正を加える時に大変なので、コメントアウトのままが良いかと思います。
チャイルドテーマを作らずにいじる場合には、
ホーム画面(is_home())に合致したときのみ、投稿者名を追加するように、テーマの functions.php に twentyseventeen_time_link 関数を上書き設定するという手はどうかなと思います。つまり、個別投稿以外だと、twentyseventeen_posted_on ではなく、twentyseventeen_time_link が呼ばれます。従って、twentyseventeen_time_link 関数自体を変更しちゃえってことです。ちょうど、
/wp-content/themes/twentyseventeen/inc/template-tags.php
には、if ( ! function_exists( 'twentyseventeen_time_link' ) ) : /** * Gets a nicely formatted string for the published date. */ function twentyseventeen_time_link() {
と書かれており、twentyseventeen_time_linkを上書き可能のためです。
たとえば、下記のような感じにすれば表示されるかなと思います。
まぁ子テーマにするのが素直だと思います。function twentyseventeen_time_link() { $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, get_the_date( DATE_W3C ), get_the_date(), get_the_modified_date( DATE_W3C ), get_the_modified_date() ); if( is_home() ){ // Get the author name; wrap it in a link. $byline = sprintf( /* translators: %s: post author */ __( 'by %s', 'twentyseventeen' ), '<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . get_the_author() . '</a></span>' ); return sprintf( /* translators: %s: post date */ __( '<span class="screen-reader-text">Posted on</span> %s', 'twentyseventeen' ), '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>' . ' ' . $byline ); }else{ // Wrap the time string in a link, and preface it with 'Posted on'. return sprintf( /* translators: %s: post date */ __( '<span class="screen-reader-text">Posted on</span> %s', 'twentyseventeen' ), '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>' ); } }
yumeikumiさま
kimipoohさまご回答いただきましてありがとうございます。
私の環境ですと、個別記事で投稿者が表示されていないため、標準とは動作が異なる可能性がございます。チャイルドテーマを作ったことがなかったため、直接編集の方が良いかと、まずはkimipoohさまにお教えいただいたtemplate-tags.phpの編集を試しましたが、こちらは投稿者が表示されませんでした。
次にyumeikumiさまにお教えいただいたチャイルドテーマを作ってからcontent.phpを編集する方法を試させていただきました。方法は、wp-content/themes/twentyseventeen-child配下に下記を設置して、content.phpを編集しました。
style.css
functions.php
template-parts/post/content.php編集リンクはそのまま残したかったので、twentyseventeen_edit_link();の行はコメントアウトしておりませんが、こちらで投稿者は表示されるようになりました。本当にありがとうございます。感謝致します。
私がお示ししたのは、
functions.php にコードを追加するのみです。 template-tags.php の中身の編集はしません。ただこれでフロントページの投稿一覧の日付の後ろに投稿名がでない場合にはテーマのコードがカスタマイズされていることになるので、その場合には第三者にはわからないことになりますね。
- トピック「投稿者を表示させたい」には新たに返信することはできません。