如何在页眉部分设置注入代码的样式?

时间:2015-08-26 作者:nisr

正在尝试将自定义代码添加到标头部分<head>..</head>通过将此代码添加到child-theme functions.php

// Add scripts to wp_head()
function child_theme_head_script() {
 if ( is_singular( \'article\' ) ) {
         $cjt = \'\'.\'<meta name="date" content="\' . get_the_date().\'" />\' . \'\';
         $ct = \'\'.\'<meta name="title" content="\' . get_the_title().\'" />\' . \'\';
} 
echo $cjt.$ct;
}
add_action( \'wp_head\', \'child_theme_head_script\' );
实际上,此代码将此结果添加到html标题中:

<meta name="date" content="July 29, 2015" /><meta name="title" content="Delays in the post-marketing withdrawal of drugs to which deaths have been attributed: a systematic investigation and analysis" />
如您所见,生成的元标记显示在标题部分,但就在前面</head>. 此外,所有元标记都在同一行上。我需要的是:

如何使此代码在标题部分的顶部显示meta标记<head>?

<meta name="date" content="July 29, 2015" />
<meta name="title" content="Delays in the post-marketing withdrawal of drugs to which deaths have been attributed: a systematic investigation and analysis" />
我试图添加<p>...</p> 但结果是:

<p><meta name="date" content="July 29, 2015" /></p><p><meta name="title" content="Delays in the post-marketing withdrawal of drugs to which deaths have been attributed: a systematic investigation and analysis" /></p>
那么,有什么建议吗?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

如何使此代码在标题部分的顶部显示meta标记?

你可能不能。通常wp_head()</head> 节,但这取决于主题。你没有任何控制权。

如何将每个元标记放在单独的行上?

使用双引号和\\n...

$cjt = \'<meta name="date" content="\' . get_the_date().\'" />\'."\\n";
$ct = \'<meta name="title" content="\' . get_the_title().\'" />\'."\\n";
(顺便说一下,我不知道为什么要将空字符串连接到字符串的开头和结尾。)

回到正题上来,为什么?您正在尝试格式化代码,无论是否格式化,浏览器都将呈现相同的代码。你在做什么无关紧要。事实上,这比无关紧要更糟糕。它引入了不必要的字符,增加了页面大小,减慢了网站加载时间。看看任何谷歌搜索结果页面。你会和谷歌争论吗?

格式化HTML源代码的习惯可以追溯到我们编写HTML源代码的时候。这样做可以使代码可读性和可维护性。现在,我编写PHP,鉴于您正在编写WordPress,您也一样。格式化您的PHP源代码,而不要终止HTML。实际上,我努力将HTML全部打印在一行上,采用谷歌风格,但如果你不想为此烦恼,至少不要浪费时间尝试格式化它。

此外,根据以下HeadMedic的评论,您的echo 应该在if 有条件的,而不是在它之外。

if ( is_singular( \'article\' ) ) {
    $cjt = \'<meta name="date" content="\' . get_the_date().\'" />\';
    $ct =  \'<meta name="title" content="\' . get_the_title().\'" />\';
    echo $cjt.$ct;
}