キタジマさん
お忙しい中ありがとうございます。いただいたコードだとauthor
が重複して2つ表示されたので、見よう見まねで次のようにしたところ、求める形になりました。正しいコードを書いているのか分かりませんが。。。
add_action( 'after_setup_theme', 'my_remove_action' );
function my_remove_action() {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 30);
}
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 9 );
PHP知識のない者ですが、分かりやすいご説明があったので自分で調べることもできました。重ねてお礼申し上げます。
■参考にしたサイト
■表示の具体例

この設定はカスタマイザーにはないので、PHP でコードを書く必要があります。
この部分の表示順は snow-monkey/app/setup/entry-meta.php
で確認できます。
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_published', 10 );
〜略〜
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
〜略〜
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 30 );
となっていると思いますが、この10、20、30が表示の優先順位です。小さい方が最初に表示されます。今回の場合は公開日を投稿者より後ろにしたいということなので、一度 snow_monkey_entry_meta_items_author
を snow_monkey_entry_meta_items
から外して、10未満の数字で再びフックさせればいけると思います。
下記のコードを子テーマの functions.php
か My Snow Monkey に貼り付けてみてください。
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 30 );
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 9 );
【お使いの Snow Monkey のバージョン】バージョン: 16.0.5
【お使いの Snow Monkey Blocks のバージョン】バージョン 14.0.1
【お使いの Snow Monkey Editor のバージョン】バージョン 7.0.0
【お使いのブラウザ】chrome
【当該サイトのURL】
### 実現したいこと
[特定アーカイブページの投稿日だけ消したい]
特定アーカイブページ(category/graduates)のみ、投稿日を表示させないようにさせたいです。
### 発生している問題
cssで消すと、全てのページの投稿日が消えてしまう。
特定カテゴリー(category(‘graduates’))のアーカイブページだけ、投稿日を消したいです。
### 試したこと
コチラのフォーラムを参考に、コードを書きました。
・functions.phpに以下の通り記述しましたが、反映されず困っています。
add_action(
'snow_monkey_entry_meta_items',
function() {
if (is_category('graduates')){
// 投稿日を削除
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_published', 10 );
}
},
);
お知恵をお貸しください。どうぞ宜しくお願いいたします。
!!できました!ありがとうございます!
私の方のコードを書き換えた場合もこちらに転機しておきますね。
function custom_remove_entry_meta_items_author() {
if ( is_singular( 'test' ) ) {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 30 );
}
}
add_action( 'wp', 'custom_remove_entry_meta_items_author' );
更新時間(snow_monkey_entry_meta_items_modified
)もフックがないと思いますが、同様の方法で非表示にできることを確認しました。
これでどうですかね?
add_action(
'wp',
function() {
if ( is_singular( 'test' ) ) {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 30 );
}
}
);
【お使いの Snow Monkey のバージョン】15.17.0
【お使いのブラウザ】Chrome
### 実現したいこと
こんにちは。今すぐ必要なカスタマイズではないのですが、手順がわからなかったので質問させてください。
「test」というスラッグのカスタム投稿タイプがあり、投稿と同じレイアウトテンプレートを使っている前提で、testだけ、タイトル下の著者情報を非表示にする方法はあるでしょうか。
「この記事を書いた人(profile_box)」についてはフックで非表示にできたのですが、著者は$argsに該当の真偽値が見つかりませんでした。
### 試したこと
フックの場所がやや強引ですが以下のように書くと、すべての投稿で非表示にはできました。
function custom_remove_entry_meta_items_author() {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 30 );
}
add_action( 'after_setup_theme', 'custom_remove_entry_meta_items_author' );
ですが after_setup_theme
では投稿タイプの判定ができないみたいですね…
もし管理画面で変更できるのでしたらすみません…
また、ここは
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
というコードで日付を表示する処理を追加しているので、snow_monkey_template_part_render
フィルターフックでの書き換えが難しいのであれば
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
でデフォルトの日付表示処理を外して、改めてオリジナルの日付表示処理を追加するほうがわかりやすいかもしれませんね。
—-
追記:すみません、↑は誤りです。↑は詳細ページのメタ情報をについてでした。今回は一覧部分の日付なので違いますね。
一覧部分の日付(というかメタ情報)は、template-parts/loop/entry-summary/meta/meta.php
というファイルで表示されています。この部分は子テーマに template-parts/loop/entry-summary/meta/meta-{投稿タイプ名}.php
というファイルがあるとそれが優先されて使われるようになっているので、子テーマにそのファイルをつくって独自に日付の表示処理を書いてしまったほうがわかりやすいかもしれませんね。
*KogaHiromichiではなく、代理で五十嵐がコメントしています。
【お使いの Snow Monkey のバージョン】 13.2.1
【お使いの Snow Monkey Blocks のバージョン】 11.0.2
【お使いの Snow Monkey Editor のバージョン】 5.0.1
【お使いのブラウザ】 Chrome
【当該サイトのURL】 ローカル環境での確認
### 発生している問題
投稿で表示してる更新日が、予約投稿を利用した場合、公開日時より「前」に記事の更新を行うと、更新日時にとして表示されてしまう。
該当部分のコード。
function snow_monkey_entry_meta_items_modified() {
if ( get_the_time( 'Ymd' ) === get_the_modified_time( 'Ymd' ) ) {
return;
}
?>
<li class="c-meta__item c-meta__item--modified">
<i class="fas fa-sync-alt" aria-hidden="true"></i>
<span class="screen-reader-text"><?php esc_html_e( 'Modified', 'snow-monkey' ); ?></span>
<time datetime="<?php the_modified_time( 'c' ); ?>"><?php the_modified_time( get_option( 'date_format' ) ); ?></time>
<?php
}
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
### 試したこと
if ( get_the_time( 'Ymd' ) === get_the_modified_time( 'Ymd' ) )
ではなくて if ( get_the_time( 'Ymd' ) < get_the_modified_time( 'Ymd' ) )
にするのはどうでしょ。
Twenty Nineteen では get_the_time( 'U' ) !== get_the_modified_time( 'U' )
となってるので、必ずしも公開日時<更新日時ではなく「一致していない場合」としてるのだと思いますが、公開日時より古い日時が更新日時として表示されることに違和感がありました。
実装しないよということであればそれでも良いです。
キタジマ様
一応確認ですが、投稿者の HTML を削除するのは「任意のタクソノミーブロック」だけで、カテゴリーアーカイブページの一覧部分からは消さないということであっていますでしょうか?
投稿者のHTMLはカテゴリーアーカイブページの一覧部分、投稿記事メタ情報などすべてから削除したいのです。
なお、カテゴリーアーカイブページの一覧部分については以前にキタジマ様からフックを教えていただきましたので削除出来ております。
また、投稿記事メタ情報部分については、本フォーラムの過去記事に該当するフックが紹介されておりましたのでこれも削除出来ております。
後は、固定ページに作成した任意のタクソノミーブロックにのみ投稿者が表示されていますので、これを削除したいということです。
一応現在のフックを掲載しますので、問題点などありましたらご指摘いただけますと助かります。
/**
* 投稿ページのメタ情報の投稿者を削除
*/
add_action(
'snow_monkey_entry_meta_items',
function() {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_author', 30 );
},
9
);
/**
* カテゴリーページの投稿者を削除
*/
add_filter(
'snow_monkey_template_part_render_template-parts/loop/entry-summary/meta/meta',
function( $html, $name, $vars ) {
// カテゴリーアーカイブ表示時、かつ記事一覧部分のとき.
if ( is_category() && 'archive' === $vars['_context'] ) {
return preg_replace(
'|
<ul>
<li class="c-meta__item c-meta__item--author">.*?</li>
</ul>
|ms',
'',
$html
);
}
return $html;
},
10,
3
);
よろしくお願いいたします。
@アクツさん
カスタムタクソノミーの場合は、タグ形式でもカテゴリー形式でも、コンテンツのメタ情報の部分に載ってしまうのが正しい挙動かと思います。
あ、記事タイトル下のところに、タグ形式のタクソノミーがでちゃうこともあるってことですよね(複数タクソノミーが割り当てられている場合はどちらかのタクソノミーが表示)。挙動的にはバグっちゃバグですね…^^; 投稿の場合はカテゴリーだけなので、カスタム投稿のときもカテゴリー形式のタクソノミーだけが表示されるのが正しい気がします。これはちょっと修正入れます。
一番良さそうな形か微妙ですが、
Snow Monkey がわざわざ Helper::get_the_public_taxonomy( get_the_ID() );
で投稿に紐付いた全タクソノミー情報をとっているのは、Snow Monkey からはどのタクソノミーを表示すれば良いのか判断ができないからなので、カスタマイズで自分の好きなタクソノミーだけを表示したいときは get_the_terms()
で好きなタクソノミーを取得すれば良いです。書き直すとこんな感じでしょうか。
カスタム投稿 news、カスタムタクソノミー news_category の場合
add_action(
'snow_monkey_prepend_contents',
function() {
// カスタム投稿のときにメタ情報のカテゴリー表示を無効化
if ( is_singular( 'news' ) ) {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_categories', 40 );
}
// カスタム投稿のときにメタ情報を表示
// カスタマイザーでビューテンプレートを「投稿」にしている場合は不要
if ( is_singular( 'news' ) ) {
add_filter(
'snow_monkey_get_template_part_args_template-parts/content/entry/entry',
function( $args ) {
$args['vars']['_display_entry_header'] = true;
$args['vars']['_post_type'] = 'post';
return $args;
}
);
}
// カスタム投稿のときに任意のタクソノミーをメタ情報に表示
if ( is_singular( 'news' ) ) {
add_action(
'snow_monkey_entry_meta_items',
function() {
$terms = get_the_terms( get_the_ID(), 'news_category' );
if ( ! is_array( $terms ) ) {
return;
}
?>
<?php foreach ( $terms as $term ) : ?>
<li class="c-meta__item c-meta__item--categories">
<span class="screen-reader-text"><?php echo esc_html( $terms->label ); ?></span>
<i class="fas fa-folder" aria-hidden="true"></i>
<a href="<?php echo esc_url( get_term_link( $term ) ); ?>"><?php echo esc_html( $term->name ); ?></a>
</li>
<?php endforeach; ?>
<?php
},
40
);
}
}
);
一番良さそうな形か微妙ですが、特定のタクソノミーを投稿のmeta情報から除外する方法もできたのでシェアしておきます(^^;
add_action( 'after_setup_theme', 'my_remove_action' );
function my_remove_action() {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_categories' , 40);
}
function ignore_tag_tax_entry_meta_items() {
$public_taxonomies = Helper::get_the_public_taxonomy( get_the_ID() );
$public_terms = [];
//特定のタクソノミーを除外する
if ( is_singular ('{カスタム投稿名}') ) {
unset ( $public_taxonomies['{カスタムタクソノミーslug}'] );
}
foreach ( $public_taxonomies as $public_taxonomy ) {
$_terms = get_the_terms( get_the_ID(), $public_taxonomy->name );
if ( ! empty( $_terms ) && is_array( $_terms ) && ! is_wp_error( $_terms ) ) {
$public_terms = $_terms;
break;
}
}
if ( ! $public_terms ) {
return;
}
?>
<?php foreach ( $public_terms as $public_term ) : ?>
<li class="c-meta__item c-meta__item--categories">
<span class="screen-reader-text"><?php echo esc_html( $public_taxonomy->label ); ?></span>
<i class="fas fa-folder" aria-hidden="true"></i>
<a href="<?php echo esc_url( get_term_link( $public_term ) ); ?>"><?php echo esc_html( $public_term->name ); ?></a>
</li>
<?php endforeach; ?>
<?php
}
add_action( 'snow_monkey_entry_meta_items', 'ignore_tag_tax_entry_meta_items', 40 );
add_action(
'snow_monkey_entry_meta_items',
function() {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 10 );
},
9,
0
);
こちらのコードに差し替えたら、更新日が消えました!
ありがとうございました!
うーん…何故でしょう。
カスタマイザーの「SEO」→「構造化データ」によって並び順などが変更されますがそちらの設定はどのようになっているでしょうか?もし、設定されていないのであれば、if文は削除しても問題ないと思いますので、下記のように差し替えてください。
add_action(
'snow_monkey_entry_meta_items',
function() {
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 10 );
},
9,
0
);
—
また、よくあるケースを下記に書いておきます。
1. My Snow Monkey が有効化されているか確認してみてください。
2. ダウンロードされた My Snow Monkey の記述は削除せず、行を追加する形で記述してください。
3. サポートフォーラムやWordPress上のエディター仕様によっては、コードのコピー&ペーストを行う際に、 ‘(アポストロフィ)
になる場合があります。 その部分の記述を '(シングルクォーテーション)
に修正してみてください。
記載されているコードはアポストロフィになっているので、3のケースが該当している可能性もあるかもしれません。一度、そちらも確認をお願いできますか?
add_action(
'snow_monkey_entry_meta_items',
function() {
if ( 'modified-date' === get_theme_mod( 'post-date' ) ) {
// 更新日を削除
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
//
} elseif ( 'modified-date-high' === get_theme_mod( 'post-date' ) ) {
// 更新日を削除
remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 10 );
}
},
9 // 優先度は9必須
);
上記のように remove_action
の行から //
を消してみましたが、
更新日は削除できていないです。どうしたらいいでしょうか・・・
投稿のヘッダー部分というのはタイトル下部のメタアイテムの事でしょうか?
My Snow Monkey でコードを書いてみてください。
各要素の消し方としては、下記のトピックも参考にしてください。
add_action(
'snow_monkey_entry_meta_items',
function() {
if ( 'modified-date' === get_theme_mod( 'post-date' ) ) {
// 更新日を削除
// remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
//
} elseif ( 'modified-date-high' === get_theme_mod( 'post-date' ) ) {
// 更新日を削除
// remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 10 );
}
},
9 // 優先度は9必須
);