• <?php
    function otocon_autoAssignTags( $post_id ) {
    global $post;
    $new_post = get_post( $post_id );
    $title = $new_post->post_title;

    if ( stripos( $title,’SE’ ) !== false ) {
    wp_set_object_terms( $post_id, ‘SE’, ‘category’, true );
    }

    }
    add_action( ‘save_post’, ‘otocon_autoAssignTags’ , ‘otocon_autoAssignCategories’ );
    ?>

    こちらの記述で投稿された記事に自動的にタグをつけています。
    これだと記事のタイトルに「SEO」と入っている記事にも「SE」のカテゴリがついてしまいます。

    if ( stripos( $title,’SEO’ ) !== false ) {
    wp_set_object_terms( $post_id, ‘SEO’, ‘category’, true );
    wp_set_object_terms( $post_id, ‘SE’, ‘category’, false );
    }

    記述をこう書き換えてみたのですがうまくいきません。

    ご教授よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • タイトルに「SE」という文字列が存在し、なおかつ「SEO」とぃう文字列の存在位置と異なっていれば、自動でカテゴリ設定するというロジックにしてみましょう。
    この変更は、if の条件式の変更で実現でき、「stripos( $title,’SE’ ) !== false」かつ「stripos( $title,’SE’ ) !== stripos( $title,’SEO’ )」というものとなります。

    トピック投稿者 asx@

    (@asx-1)

    ありがとうございます!

    教えていただいたように記述を変更しましたら
    思っていた通りに動作いたしました!

    たすかりました!

    トピック投稿者 asx@

    (@asx-1)

    if ( stripos( $title,’SE’ ) !== false && stripos( $title,’SEO’ )!== stripos(title,’SE’ )) {
    wp_set_object_terms( $post_id, ‘SE’, ‘category’, true );
    }

    こう記述して、「できた」と思ったのですが、
    細かく設定できません。

    1、一つの文字列に一つのカテゴリをつけて二つの文字列をはずす。
    2、if ( stripos( $title,’文字列1’ ) !== false ) {
       if ( stripos( $title,’文字列2’ ) !== false ) {
        wp_set_object_terms( $post_id, ‘カテゴリ名’, ‘category’, true );
    }
    }
    という場合にうまくいきません。

    特定の文字列が入っているときだけカテゴリをつけないという方法はないでしょうか?

    特定の文字列が入っているときだけカテゴリをつけないという方法はないでしょうか?

    条件分岐の書き方だと思いますが、どうしたいのかよく分かりませんのでもう少し詳しく説明をお願いします。

    トピック投稿者 asx@

    (@asx-1)

    説明不足で申し訳ありません。

    投稿記事に特定の文字が入っている場合に
    if ( stripos( $title,’SEO’ ) !== false ) {
    wp_set_object_terms( $post_id, ‘SEO’, ‘category’, true );
    }
    こちらの記述でカテゴリをつけています。

    この記述ですと、投稿記事のタイトルが「SEO part2」でも「SEO」カテゴリがついてしまいます。

    投稿記事のタイトルが「SEO」のときは「SEO」のカテゴリだけをつけて、
    タイトルが「SEO part2」のときは「SEO part2」のカテゴリだけをつける処理にしたい。

    ただ

    if ( stripos( $title,’SEO’ ) !== false ) {
    if ( stripos( $title,’外部リンク’ ) !== false ) {
    wp_set_object_terms( $post_id, ‘外部リンク’, ‘category’, true );
    }
    }

    この場合に
    タイトルが「SEO 外部リンク part2」の場合は「外部リンク」のカテゴリをつけない

    という処理ができるようにしたいです。

    プログラムは素人なので説明がわかりづらくて申し訳ありませんが
    よろしくお願いいたします。

    最初のパターンは、冒頭の質問とパターンが同じなので割愛します。

    タイトルが「SEO 外部リンク part2」の場合は「外部リンク」のカテゴリをつけない

    という処理ができるようにしたいです。

    wp_set_object_terms は、カテゴリーを設定する関数ですから、条件分岐は「○○のときに、”外部リンク”カテゴリーを設定する」というものになっていなければなりません。

    それが明確に、また無数のパターンが生じないのであれば自動化できますが、そうでない場合、自動化することはできません。

6件の返信を表示中 - 1 - 6件目 (全6件中)

トピック「自動的にカテゴリを付けるのと除外したい」には新たに返信することはできません。