ありがとうございます!
snow_monkey_display_contents_outline
フィルターフックは固定ページ・投稿のときしか実行されないので、アーカイブページには影響を与えることができません。一番簡単なのは、アーカイブページに表示している固定ページの中に目次ブロックを配置する方法かなと思います。何らかの理由でブロック配置が NG であれば、下記のようなコードでアーカイブページに目次を入れる感じになりますかね。
add_action(
'snow_monkey_before_archive_entry_content',
function() {
$vars = array(
'_title' => __( 'Contents outline', 'snow-monkey' ),
);
Helper::get_template_part( 'template-parts/content/contents-outline', null, $vars );
}
);
お世話になっております。
コードはこちらです。
/*目次*/
add_filter(
'snow_monkey_display_contents_outline',
function( $display ) {
if ( is_front_page() ) {
return false;
}
if ( is_single() ) {
return true;
}
//固定ページにも目次を入れたい場合
/*if ( is_page() ) {
return true;
}*/
return false;
}
);
サイトを拝見すると、現在はウィジェットで目次を入れられているようなので、まずそれを消して、以下のいずれかの方法で最初の見出しの上に表示することができます。
1. 目次ブロックを使う
各記事の編集画面で目次ブロックを挿入します。ご自身で最初の見出しの上に挿入するか、適当なところに挿入して目次ブロックのインスペクター(設定パネル)で最初の見出しの前に移動にチェックすると、最初の見出しの上に表示されるようになります。デメリットとしては、各記事ごとに設定が必要なことです。
2. フィルターフックを使う
snow_monkey_display_contents_outline
フィルターフックを使うことで全ての記事に目次ブロックを表示できます。この目次は自動的に最初の見出しの上に表示されます。メリットは全記事に一発で目次を入れられること、デメリットは細かい位置調整やこの記事には表示させたくないという調整がやりにくいことです。
もし snow_monkey_display_contents_outline
フィルターフックを使って目次を自動表示しているのであれば、目次を書き換えるフィルターフックを使ってこの下に広告を追加することはできるかもしれません。
ただ、このフックを使っていなくて目次を手動で入れている状況であれば、Kmical Lights さんが書かれているように手動でやるのが安全かなと思いました。
【お使いの Snow Monkey のバージョン】7.13.0
いつもお世話になっております。
以前、ご教示いただいた下記コードで、投稿ページの上部に目次を表示させています。
ウィジェットの「WPAW目次」では、表示させたい見出しにチェックする形になっていますが、下記コードで見出しを表示させている場合、同様のことはできませんでしょうか。
例えば、h2~h3だけを表示させるなど。
add_filter(
'snow_monkey_display_contents_outline',
function( $display ) {
if ( is_front_page() ) {
return false;
}
if ( is_single() ) {
return true;
}
/*
// 固定ページにも目次を入れたい場合
if ( is_page() ) {
return true;
}
*/
return false;
}
);
どうぞよろしくお願いいたします。
なるほど!
ではこんな感じにコードを変更したらどうなりますでしょうか?
add_filter(
'snow_monkey_display_contents_outline',
function( $display ) {
if ( is_front_page() ) {
return false;
}
if ( is_single() ) {
return true;
}
/*
// 固定ページにも目次を入れたい場合
if ( is_page() ) {
return true;
}
*/
return false;
}
);
【お使いの Snow Monkey のバージョン】7.4.3
度々すみません、質問クローズした以下の内容についてです。
add_filter( 'snow_monkey_display_contents_outline', '__return_true' );
で、投稿ページに目次が表示できたのですが、トップページ(固定ページ)にも表示されてしまいました。
投稿ページのみに表示されるようにはできませんでしょうか。
また、ページ指定ということも可能でしょうか。
よろしくお願いいたします。
「投稿ページ上部」は、投稿ページ(ブログトップページ)用のウィジェットエリアになります。おそらく、ブログトップページに見出しが存在しないのではないでしょうか?
記事に目次を入れたい場合は、目次ブロックを使うか、下記のコードを My Snow Monkey に追加すると表示されるようになります。
add_filter( 'snow_monkey_display_contents_outline', '__return_true' );
の記事をみてみました。
例えば、「最新情報・お知らせ」の部分は h2 タグになっていますが、ここはもともと h1 タグだった、ということでしょうか?もしくは見た目的に h2 の見た目になっていない、ということでしょうか?
後者の場合、子テーマでテンプレートを上書きしている可能性が高いのではないかと思います。/templates/view/content.php
とか、/templates/view/content-page.php
とかが子テーマにないでしょうか?もし子テーマでそれらのファイルを上書きしている場合、Snow Monkey の最新のファイルをコピペしなおして、再度上書きし直してみてください。
あと、それから目次も表示されなくなりました。
Snow Monkey v5.0 から、目次の自動表示は廃止されました。Snow Monkey Blocks の目次ブロックを記事ごとにいれるか、これまでどおり自動表示したい場合は下記のコードを子テーマの functions.php に追加してください。
add_filter( 'snow_monkey_display_contents_outline', '__return_true' );
Snow Monkey v5.0 はこれまでの 4.4系と互換性がない部分が多数あります。下記の記事にてご確認ください。