WordPress テンプレート Twenty Seventeen の困った点

Twenty Seventeen オサレだし、カスタマイズも進歩してるし、日本語フォントなんかもデフォルトで良い感じなのですが、

トップが画面全体を使って画像や動画を置くような形式(以下、勝手に「表紙」と呼ぶ)なのも、用途によるだろうけどいいとして、

その表紙にあるサイト名をクリックすると、ホームへのリンクなので、(当然)表紙が表示されたままなんですね。スクロールさせるか、右下にある(サイト名と比べると目立たない)「↓」を押せばいいんですが、ちょっと不親切な気がする。

それだけならいいんですが、ページ下にあるナビゲーション使うと、またいちいち表紙が表示されるんですね。そこでうっかりサイト名クリックするとトップに戻ってしまう。

で、Twenty Seventeenの子テーマ作って、home_url のフィルタで URL の後ろに #content 足したらいいかなと思ってやってみたものの、今度はナビゲーションのリンクの途中に http://.../#content/page/2 みたいに入ってしまって、リンクとして機能しなくなるのでダメ。このフィルタ、こういう使い方想定してないですかね。

で、このナビゲーションはテーマじゃなくて wp-include/general-template.php で作ってるようなので、そこを見ると paginate_links というフィルタがあるらしい。なので、それを使う。

結果として、子テーマの functions.php は、

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}

add_filter('paginate_links', 'mylink', 1, 1);

function mylink( $link='' ) {
    return $link . '#content';
}
?>

こんな感じに。

んで、home_urlの方はフィルタでいじるのを諦めて、元のテーマの template-parts/header/site-branding.php をコピーして home_url('/') を直接home_url('/#content') へ変更。

もっとうまいやり方がありそうだけど、Wordpress(の中身)もPHPもマトモに触ったことないのでこの辺で妥協。

デフォルトがマシになってくれることを祈る。