1

単一の 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 タイトルに「Test word」が含まれている場合、一致を認識せず、$issout = $issouttxt になります (つまり、カテゴリ名が誤って追加されます)。配列の 2 番目の部分 ('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 に答える