問題:
Wordpress には、タクソノミーの「メタ」値を格納するための構造もメソッドもありません。
UPDATE 2017: WP 4.4+ には「用語メタ」があります!
用語のメタを操作するには、次を使用します。
update_term_meta()
get_term_meta()
delete_term_meta()
add_term_meta()
ただし、以下のアクションは引き続き有効です。:)
追加資料: 4.4 タクソノミーのまとめ
WP バージョン <= 4.3.x および共通アクションの解決策
create_category
およびedit_category
カテゴリ編集用
category_add_form_fields
およびcategory_edit_form
カテゴリフォームフィールド用
私が提示したよりも多くのアクションがありますが、それらは非推奨のようです(developer.wordpress.org によると)。
私が選択したアクションを選択した理由:
- それらは WordPress 4.4.2 で動作します
- ドキュメントがないため、これらは廃止されたものを置き換える新しいものだと思いました...
機能:
get_option( $option, $default );
update_option( $option, $new_value, $autoload );
update_option
には 2 つの優れた機能があります:
a) オプションがまだ存在しない場合に、そのオプションを作成します。
add_option() のオプションの引数を指定する必要がない限り、 update_option() は、オプションの追加と更新の両方に役立つ便利なキャッチオールです。
b)$new_value
整数、文字列、配列、またはオブジェクトにすることができます。
なぜ配列/オブジェクトを使用するのですか? ...まあ、各オプション = 1 データベース行 => おそらくカテゴリ オプションを1行に格納したいからです:)
コード
function my_category_form_fields($tag_object){
//output/display extra form fields, e.g. by echo ...
//ADD EXTRA SPECIFIC FIELD TO LATER CHECK IF IT'S CATEGORY SAVE/EDIT!
//(see note at 'edit_category' action...)
if( !empty($tag_object['term_id']) ){
//edit category form specific
//...load existing options with get_option( $option, $default );
} else {
//create category form specific
}
}
function my_category_save(){
//CHECK FOR YOUR EXTRA SPECIFIC FIELD TO CHECK IF IT'S CATEGORY SAVE/EDIT
//(see note at 'edit_category' action...)
//SECURITY CHECK
if( empty($_POST['EXTRA_SPECIFIC_FIELD']) || ! current_user_can('manage_categories') )
return null;
//save your form values using update_option()
//Recommendation:
//Add "category_" prefix and $category_id to your option name!
}
add_action( 'create_category', 'my_category_save', 10, 1 );
//Runs when a category is updated/edited,
//INCLUDING when a post or blogroll link is added/deleted or its categories are updated
//(which causes the count for the category to update)
add_action( 'edit_category', 'my_category_save', 10, 1 );
add_action( 'category_add_form_fields', 'my_category_form_fields', 10, 1 );
add_action( 'category_edit_form', 'my_category_form_fields', 10, 1 );
作成または編集しますか?
カテゴリを作成しているのか、保存しているのか疑問に思うかもしれません - これは (私が知る限り) まだ文書化されていませんが、テストから:
- Edit save =>
$tag_object
にはobject
、いくつかのプロパティが含まれています。最も顕著なのは次のとおりです。
- Create save =>
$tag_object
は通常のstring
「カテゴリ」です。これは将来変更される可能性があります...
一般的な分類法
一般的なタクソノミに対しては、このようなアクションもあります。これらのアクションを確認してください。