我的帖子介于两个 If 语句之间,我该怎么办?



目前,我正在尝试为我的WordPress网站的元部分过滤掉各种内容,我发现了一个问题,使用以下代码可以完美运行,直到我需要更具体一点。

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="" />';
}

它也在我们希望的类别中显示这部分的元,它怎么也显示其他函数的元描述,我能做什么堆栈?

这听起来可能很简单,但首先你要准确地记录你想要发生的事情。也许给自己做一个流程图或写几段。无论哪种方式,您都需要首先从非代码的角度进行了解。这将使您能够回答诸如"标签是否优先于单个帖子?了解此过程后,将条件从输出中移开以简化该过程。像这样:

// 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 -->

最新更新