リンク切れ(5)

これで、ようやくリンク切れがなくなりました。以下のfunctions.phpを用います。

<?php
function my_theme_enqueue_styles() {
    $parent_style = 'twentyseventeen-style';
    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array( $parent_style )
    );
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );

function my_update_styles( $styles ) {
    $mtime = filemtime( get_stylesheet_directory() . '/style.css' );
    $styles->default_version = date("Y-m-d-D-H:i:s", $mtime);
}
add_action( 'wp_default_styles', 'my_update_styles' );

remove_action( 'wp_head', 'wp_resource_hints', 2 );

function my_dns_prefetch() {
    echo '<link rel="dns-prefetch" href="//fonts.googleapis.com/css?family=Asap|Julee" />' . "\n";
}
add_action( 'wp_head', 'my_dns_prefetch' );
?>

htmlファイルは以下のようになります。

45 <link rel='stylesheet' id='twentyseventeen-style-css'  href='http://spinorlab.matrix.jp/en/wp-content/themes/twentyseventeen/style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />
46 <link rel='stylesheet' id='child-style-css'            href='http://spinorlab.matrix.jp/en/wp-content/themes/twentyseventeen-child/style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />
47 <link rel='stylesheet' id='twentyseventeen-fonts-css'  href='https://fonts.googleapis.com/css?family=Libre+Franklin%3A300%2C300i%2C400%2C400i%2C600%2C600i%2C800%2C800i&#038;subset=latin%2Clatin-ext' type='text/css' media='all' />
60 <link rel="dns-prefetch" href="//fonts.googleapis.com/css?family=Asap|Julee" />

(たまたま)第47行があるので、私のfunctions.phpで付加された第60行は今のところ必要ではありませんが、将来のためにそのままにしておきましょう。

リンク切れ(4)

どうやら、get_stylesheet_directory()ではなくて、get_stylesheet_directory_uri()を使うべきだったようです。

function theme_enqueue_styles() {
  wp_enqueue_style( 'parent-style', get_template_directory_uri()   . '/style.css' );
  wp_enqueue_style( 'child-style' , get_stylesheet_directory_uri() . '/style.css', array('parent-style')
);

生成されるhtmlファイルはこうなりました:(読みやすさのために空白を挿入しています)

48 <link rel='stylesheet' id='parent-style-css'           href='http://spinorlab.matrix.jp/en/wp-content/themes/twentyseventeen/      style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />
49 <link rel='stylesheet' id='child-style-css'            href='http://spinorlab.matrix.jp/en/wp-content/themes/twentyseventeen-child/style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />
51 <link rel='stylesheet' id='twentyseventeen-style-css'  href='http://spinorlab.matrix.jp/en/wp-content/themes/twentyseventeen-child/style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />

同じ行、49と51、は2つ要らないですね。それと、親と子と2つの異なるスタイルファイルに対して同じタイムスタンプを与えているのもあまり見栄えが良くないことを、私は認めなければいけません。

リンク切れ(3)

別のリンク切れは、49行で起きています。

48 <link rel='stylesheet' id='parent-style-css'  href='http://spinorlab.matrix.jp/en/wp-content/themes/twentyseventeen/style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />
49 <link rel='stylesheet' id='child-style-css'  href='http://spinorlab.matrix.jp/en/home/xxxx/www/spinorlab/en/wp-content/themes/twentyseventeen-child/style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />
51 <link rel='stylesheet' id='twentyseventeen-style-css'  href='http://spinorlab.matrix.jp/en/wp-content/themes/twentyseventeen-child/style.css?ver=2017-08-03-Thu-00:25:48' type='text/css' media='all' />

多分、これは私のfunctions.phpの以下の行と関連しているのでしょう。

function theme_enqueue_styles() {
  wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
  wp_enqueue_style( 'child-style', get_stylesheet_directory() . '/style.css', array('parent-style')
);

関数get_stylesheet_directory()は、文字列”/home/xxx/www/spinorlab/en/wp-content/themes/twentyseventeen-child”を返すのですが、プリフィックはどこから?

リンク切れ(2)

これは、別のリンク切れです。このエラーは、サイドバーのMetaセクションからきています。

私は、このメニューは特に必要ではないので、単にセクションを全部削除してしまいました。

リンク切れ

これが、W3C Link Checkerで見つかったリンク切れの1つです。

25	<link rel='dns-prefetch' href='//fonts.googleapis.com' />

どうやら、fonts.googleapis.comに対するhttp(s)リクエストは、/css?family=…という部分が必要なようです。以下を見て下さい。

さて、私はどうすべきでしょうか?

  • リンク切れを無視して、何もしない?
  • dns-prefetch行を修正する?
  • もしくは、dns-prefetch行を削除してしまう?

リンクチェッカー

あなたのサイトにリンク切れが無いかをチェックするのは良い習慣です。

私は私の.htaccessファイルを修正したので、今では、リンク切れは無いはずですが・・。

おや!まだ、どこかがおかしいようですね。

URLの書き換え

URLの書き換えは、ルールを適用するのにあなたが非常に注意深くないかぎり、苦しみの元になりえます。

私の英語版のサイトは、 .htaccessファイルのエラーでここ数日間トップページのみがアクセス可能でした。

% diff ./en/.htaccess ./ja/.htaccess 
21c21
< RewriteBase /spinorlab.matrix.jp/en/
---
> RewriteBase /ja/
25c25
< RewriteRule . /spinorlab.matrix.jp/en/index.php [L]
---
> RewriteRule . /ja/index.php [L]

このエラーは、多分私が私の英語版サイトをHTTPS化しようと思って使おうとしていたプラグインによってもたらされたのだと思います。