1

在 single,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";
} 
}
?>

有任何想法吗?

更新:所以我有点想通了,但数组匹配不是很正确:

$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(即,它错误地添加了类别名称)。如果我删除数组的第二部分('Test word more'),它会识别匹配项和 $issout = '';。

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

4

1 回答 1

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;
?>
于 2012-08-18T13:58:41.857 回答