如果帖子标题中没有类别名称,如何在标题中添加类别名称

时间:2012-08-13 04:21:29

标签: wordpress

在单个,php中,如果类别名称不是帖子标题的一部分,我正在尝试自动将类别名称添加到标题标签。否则,只是不添加任何东西。 这是我尝试使用preg_match但没有运气的原因。

<?php
$keywords = array('Category phrase a', 'Category phrase b');
foreach($keywords as $word)
{
    if(preg_match('/'.$word.'/i', 'wp_title', 'return=true')) {
echo "";
} else {
echo "Category Phrase";
} 
}
?>

有什么想法吗?

UPDATE:所以我有点想通了,但是数组匹配工作不正常:

$keywords = array('Test word', 'Test word more');
$issouttxt = "Category Phrase: ";
$isstitle = wp_title('',false,'right'); 
foreach($keywords as $word)
{ if(preg_match('/'.$word.'/i', $isstitle)) {
$issout = '';
} else {
$issout = $issouttxt;
}}
print $issout; 

例如,如果WP标题包含“测试词”,则它不识别匹配和$ issout = $ issouttxt(即,它错误地添加了类别名称)。如果我删除数组的第二部分('更多测试单词'),它会识别匹配并且$ issout ='';。

是否有不同的方法来设置数组,以便所有关键字都匹配,并且它们不会相互干扰?

1 个答案:

答案 0 :(得分:0)

如果你在循环中,那么我会像这样运行它。如果您不在循环中,则可以将帖子ID添加到标题和类别的调用中。

此脚本会将所有缺少的类别添加到标题中。

<?php
$title=get_the_title();
$categories=get_the_category(); // or use get_categories() for all categories

  if(!empty($categories)) :
    foreach($categories as $category) :
      if(strpos($title,$category->name)===false)
        $title.=', '.$category->name;
    endforeach;
  endif;
 echo $title;
?>