0

Wordpress 内で、投稿のコンテンツを読んでキーワードを探し、それに応じてサイドバーのコンテンツを表示することはできますか? 例:

投稿コンテンツに「チーズ」という単語が含まれている場合はサイドバー広告を表示しないでください。それ以外の場合は表示します。

追加情報として、500 件を超える投稿があるため、すべての投稿にタグやカスタム フィールドを追加したくありません。

コードの例を含めたいと思いますが、functions.php で正規表現から始めるかどうかは本当にわかりません。もしそうなら、サイドバー コードで何を探すべきでしょうか?

前もって感謝します。

更新 1 - Stripos は、この目的のために正規表現よりも高速に思われるため、php.net の Striposを使用しました。

更新 2 - 私の現在の設定... index.php (またはテーマに応じて page.php など):

    <?php
    if( has_keyword() ) {
        get_sidebar( 'special' );
    } else {
        get_sidebar( 'normal' );
    }
    ?>

そして functions.php で

function has_keyword ()
{
    global $post;

    $mywords = array('word1', 'word2', 'word3');
    foreach($mywords as $word){

        // return false if post content does not contain keyword
        if( ( stripos( $post->post_content, $word ) === false ) ) {
        return false;
        };
    };
        // return true if it does
        return true;
}; //end function

foreach 関数を機能させる必要があります。何か問題があります。単語の検索に成功したときに「break」を使用しようとしましたが、「false」も返す必要があるため、if 条件を追加しました。これを行う方法がわからない。

4

3 に答える 3

1

単語のリストに対して検証する場合は、以下のこの関数を使用できます。 $content に単語が見つかった場合は false を返し、それ以外の場合は true を返します。つまり、先に進んで広告を表示してください。

function displayAds($content){
    $words = array('cheese', 'ham', 'xxx');
    foreach($words as $word){
       if(preg_match('/\s'.$word.'\s/i', $content)){
          return FALSE;
       };
    };
    return TRUE;
 };

次に、 index.php で、Updateで大声で考えることを行うことができます。命名の選択を反映するように関数名を自然に変更します。

于 2013-05-21T18:34:01.717 に答える