カテゴリ10にデフォルトでチェックを入れたいというのとは違います?
なんか難しく考えているような気がしますが。上記のような内容でしたら過去ログがあったはずです。
>shokun0803さま
お返事ありがとうございます!!
>カテゴリ10にデフォルトでチェックを入れたいというのとは違います?
違うんですよ。。
投稿者によって、カスタムフィールドテンプレートを使って、
ネーム→カテゴリIDと一致
を選択してもらい、それを更新した際、自動的にwordpressのカテゴリも変更
されるようにしたいのです。
案は有りませんか?
宜しくお願い致します。
う~ん、いまいちやりたいことが見えてこないのですが・・・理解力が低くてすみません。。
更新(公開)ボタンを押した時に動作するフックはあります。
カスタムフィールドの中身をみて何らかのアクションを起こすことも可能です。
たぶんその投稿記事のカテゴリを書き換えることも簡単です。
上記のようなことを実際にやっていて、その時の質問がhttp://ja.forums.wordpress.org/topic/3193?replies=14にあります。
何か参考になりますでしょうか?
>shokun0803さま
こちらも舌足らずで申し訳ありません。
また、ご質問にお付き合い頂いて有り難うございます。
>上記のようなことを実際にやっていて、その時の質問がhttp://ja.forums.wordpress.org/topic/3193?replies=14にあります。
この記事、以前から拝見しました。
しかし、$dataの配列の中に、カテゴリーについての配列が含まれていないようなのです。
$postarr と $post には
post_category
の配列が含まれており、苦し紛れに、
$post[‘post_category’] = array(3);
や
$postarr[‘post_category’] = array(3);
などとして、
return $post
や
return $postarr
などとしても一向に反映されません。。
以下は、実際には動かないのですが、試行錯誤の残骸です。
以下を見て頂ければ、私がしたいことの片鱗をご理解頂けるかもしれません。
宜しくお願いします。
<?php
/*
Plugin Name: change_cat
Plugin URI: http://wordpress.org/#
Description: カテゴリー変更
Author: shin
Version: 1
Author URI: http://hogehoge.jp/
*/
function change_cat( $data, $postarr ) {
$post_id = $_POST[‘post_ID’];
$action = $_POST[‘action’];
//if(!empty($post_id) && ($action == ‘editpost’) && !current_user_can(‘manage_options’)){
if(!empty($post_id) && !current_user_can(‘manage_options’)){
$post = get_post($post_id);
//print_r($previous_status);
//print_r($postarr);
//print_r($post);
//$last_c = $post->post_content;
//print($last_c);
//print($data[‘post_content’]);
//$post[‘post_category’] = array();
//$post[‘post_category’] = array(3);
$post->post_category = array(3);
//print_r($post);
//print_r($postarr);
//$postarr[”]
}
return $post;
}
add_filter( ‘wp_insert_post_data’, ‘change_cat’, 10, 2 );
?>