フォーラムへの返信

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: wp_insert_post からの投稿タグ付けについて
    トピック投稿者 hiyokaji

    (@hiyokaji)

    丁寧なレスありがとうございます。

    nobita さん
    $tags が配列だと思い込みで書いてました。
    実際きちんと配列でしたが、確認したわけではなかったのですみませんでした。

    y_yu さん
    ビンゴです!
    wp_set_post_tags の関数を完全に見落としてました。
    実際、wp_insert_post って「投稿データ(拡張以外)」を全て insert するものだとばかり思ってたので、「なんでタグ(入れ物)を作るだけなの?」とかなり戸惑ってました。
    なるほど、wp_insert_post の成功で $post_id が帰ってきて、それと連動させるのが wp_set_post_tags なんですね。

    nobita さん、y_yu さん、おかげさまで助かりました。
    ありがとうございます。

    フォーラム: 使い方全般
    返信が含まれるトピック: wp_insert_post からの投稿タグ付けについて
    トピック投稿者 hiyokaji

    (@hiyokaji)

    nobita さん、レスありがとうございます。
    つぶやきの内容を

    こんにちは。 @hiyokaji #test #wordpress #code

    とした場合、test, wordpress, code の配列がこの順序で入ります(この場合 3 つ)
    正規表現はオリジナルではなくて、
    http://github.com/mzsanford/twitter-text-php
    のライブラリ(twitter 開発チームの一員の mzsanford 氏作成)からのコピーです。
    Twitter Tools 内にも同様の正規表現があったのですが、ハッシュタグが複数になると上手く取得できないものだったので使っていません。

    引数の問題ですか?
    WordPress の関数リファレンスを読んだんですけど、いまいちピンときませんでした。

    フォーラム: 使い方全般
    返信が含まれるトピック: wp_insert_post からの投稿タグ付けについて
    トピック投稿者 hiyokaji

    (@hiyokaji)

    すみません、変更内容は以下の通りです。

    twitter-tools.php(変更前)

    function do_tweet_post($tweet) {
    global $wpdb;
    remove_action(‘publish_post’, ‘aktt_notify_twitter’, 99);
    $data = array(
    ‘post_content’ => $wpdb->escape(aktt_make_clickable($tweet->tw_text))
    , ‘post_title’ => $wpdb->escape(trim_add_elipsis($tweet->tw_text, 30))
    , ‘post_date’ => get_date_from_gmt(date(‘Y-m-d H:i:s’, $tweet->tw_created_at))
    , ‘post_category’ => array($this->blog_post_category)
    , ‘post_status’ => ‘publish’
    , ‘post_author’ => $wpdb->escape($this->blog_post_author)
    );
    $data = apply_filters(‘aktt_do_tweet_post’, $data, $tweet); // return false here to not make a blog post
    if (!$data) {
    return;
    }
    $post_id = wp_insert_post($data);
    add_post_meta($post_id, ‘aktt_twitter_id’, $tweet->tw_id, true);
    wp_set_post_tags($post_id, $this->blog_post_tags);
    add_action(‘publish_post’, ‘aktt_notify_twitter’, 99);
    }

    変更後

    function do_tweet_post($tweet) {
    global $wpdb;
    remove_action(‘publish_post’, ‘aktt_notify_twitter’, 99);

    // 追加箇所
    preg_match_all(‘$(^|[^0-9A-Z&/]+)([##]+)([0-9A-Z_]*[A-Z_]+[a-z0-9_üÀ-ÖØ-öø-ÿ]*)$i’, $tweet->tw_text, $matches);
    $tags = $matches[3];

    $data = array(
    ‘post_content’ => $wpdb->escape(aktt_make_clickable($tweet->tw_text))
    , ‘post_title’ => $wpdb->escape(trim_add_elipsis($tweet->tw_text, 30))
    , ‘post_date’ => get_date_from_gmt(date(‘Y-m-d H:i:s’, $tweet->tw_created_at))
    , ‘post_category’ => array($this->blog_post_category)
    , ‘post_status’ => ‘publish’
    , ‘post_author’ => $wpdb->escape($this->blog_post_author)

    // 追加箇所
    , ‘tags_input’ => $tags
    );
    $data = apply_filters(‘aktt_do_tweet_post’, $data, $tweet); // return false here to not make a blog post
    if (!$data) {
    return;
    }
    $post_id = wp_insert_post($data);
    add_post_meta($post_id, ‘aktt_twitter_id’, $tweet->tw_id, true);
    wp_set_post_tags($post_id, $this->blog_post_tags);
    add_action(‘publish_post’, ‘aktt_notify_twitter’, 99);
    }

    上記の通り、追加は 3 行のみです。
    おねがいします。

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