WordPressで作成したページを
W3C Markup Validation Service
で文法チェックしてみることにした。

すると、1つエラーが発生した。


W3C Markup Validation Service

Error Line 981, Column 186: Element link is missing required attribute property.
…elated-posts-plugin/style/related.css?ver=3.9.2' type='text/css' media='all' />
Attributes for element link:
Global attributes
href
crossorigin
rel
media
hreflang
type
sizes
Also, the title attribute has special semantics on this element.

…elated-posts-plugin/style/related.css?ver=3.9.2' の部分はYet Another Related Posts Plugin (YARPP)を利用しているので、そのスタイルシートのlinkがおかしいようだ。
しかし、YARPPのCSSへのlink タグは間違っているようには見えない。

・
・
・
<link rel='stylesheet' id='yarppRelatedCss-css'href='http://mysite.com/wp/wp-content/plugins/yet-another-related-posts-plugin/style/related.css?ver=3.9.2' type='text/css' media='all' />
<script type='text/javascript' src='http://mysite.com/wp/wp-includes/js/comment-reply.min.js?ver=3.9.2'></script>
<script type='text/javascript' src='//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js?ver=3.1.0'></script>
<script type='text/javascript' src='http://mysite.com/wp/wp-content/themes/rabm01/js/e-smart-zoom-jquery.min.js?ver=1.0.0'></script>
<script type='text/javascript' src='http://mysite.com/wp/wp-content/themes/rabm01/js/modernizr.custom.99332.js?ver=2.8.3'></script>
</body>
</html>

調べてみると、次のURLに同じような人の質問と解決方法があった。

[RESOLVED] Validator error! Element link is missing required attribute property.

the "link element" should not be on line #145.
It must be positioned within the head section of the document

なんと、link はheadの中にあるべきのようだ。

しかし、Wordpressでは、wp_enqueue_styleで利用するCSSを宣言して、あとは、Wordpressが適切に出力してくれるのではないのか?
wp-content/plugins/yet-another-related-posts-plugin/classes/YARPP_Core.php の \YARPP::display_related を見ても、wp_enqueue_styleを利用してCSS利用を宣言している。これも次のURLが参考になった。

WordPress - wp_enqueue_style is adding the style to the footer, not the header

今、Wordpressのテーマ中のsingle.phpで投稿表示の後にrelated_posts()を入れている。

<?php if( function_exists( 'related_posts' ) ){
related_posts();
}?>

related_postsの中から\YARPP::display_relatedがCallされ、wp_enqueue_styleも呼ばれる。
しかし、single.phpの冒頭では、

<?php get_header(); ?>

がCallされているので、すでにヘッダは取得済ではないのか?そのため、wp_enqueue_styleをsingle.phpの冒頭でCallしてみた。

<?php
wp_enqueue_style('yarppRelatedCss', YARPP_URL.'/style/related.css');
get_header(); ?>

すると、今度はheadの中にCSSへのlink要素が出力された。
W3C Markup Validationもエラーにならなくなった。

もしくは、functions.phpでinitアクションを作成してそこに追加してもよさそうだ。
本当にこれでよいのか不明だが、すぐ忘れそうなのでメモっておこう。