hiyokaji
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: wp_insert_post からの投稿タグ付けについて丁寧なレスありがとうございます。
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 からの投稿タグ付けについてnobita さん、レスありがとうございます。
つぶやきの内容をこんにちは。 @hiyokaji #test #wordpress #code
とした場合、test, wordpress, code の配列がこの順序で入ります(この場合 3 つ)
正規表現はオリジナルではなくて、
http://github.com/mzsanford/twitter-text-php
のライブラリ(twitter 開発チームの一員の mzsanford 氏作成)からのコピーです。
Twitter Tools 内にも同様の正規表現があったのですが、ハッシュタグが複数になると上手く取得できないものだったので使っていません。引数の問題ですか?
WordPress の関数リファレンスを読んだんですけど、いまいちピンときませんでした。フォーラム: 使い方全般
返信が含まれるトピック: wp_insert_post からの投稿タグ付けについてすみません、変更内容は以下の通りです。
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 行のみです。
おねがいします。