目前我正在尝试为我的 WordPress 网站的meta部分过滤掉各种内容,我发现了一个问题,使用以下代码完美运行,直到我需要获取更具体一点。
if (is_singular('post')) {
$title = get_the_title ();
print '<title>'.$title.'</title>';
$feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
print '<meta property="og:image" content="'.$feat_image.'"/>';
print '<meta name="description" content="" />';
} else {
print '<title></title>';
print '<meta name="description" content="" />';
}
请注意,我编辑了上面的元描述以便它们为空,只是为了在堆栈上发布。
然后我想根据帖子的标签开始过滤,显然这会与上面已经声明的(is_singular('post'))
函数冲突。
但是,我使用了以下代码。
if ( has_tag( 'spanish' )) {
print '<title>'.$title.'</title>';
$feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
print '<meta property="og:image" content="'.$feat_image.'"/>';
print '<meta name="description" content="" />';
}
它也在我们希望的类别中显示该部分的元素,但是它也为其他函数显示元描述,我可以做什么堆叠?
答案 0 :(得分:-1)
这可能听起来很简单,但首先你要准确记录你想要发生的事情。也许让自己成为流程图或写几段。无论哪种方式,您首先需要从非代码的角度来了解。这将使您能够回答诸如“标签优先于单个帖子吗?”之类的问题。了解此过程后,请将您的条件从输出中移开以简化过程。像这样:
// defaults
$title = '...';
$metaDescription = '...';
$featuredImage = '...';
// overrides for difference scenarios
if (is_singular('post')) {
// set title, etc here
}
if (has_tag('spanish')) {
// override or concatenate title, etc here
}
// output
print "<title>$title</title>";
<!-- etc etc -->