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

时间:2017-07-25 12:48:11

标签: php wordpress

目前我正在尝试为我的 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="" />';
}

它也在我们希望的类别中显示该部分的元素,但是它也为其他函数显示元描述,我可以做什么堆叠?

1 个答案:

答案 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 -->