カテゴリにカスタムフィールドを追加
-
-
[カテゴリエディタにカスタムフィールドを追加する例はありますか?](http://wordpress.stackexchange.com/questions/6549/any-examples-of-adding-custom-fields-to-the-category-editor)possible duplicate of [Any examples of adding custom fields to the category editor?](http://wordpress.stackexchange.com/questions/6549/any-examples-of-adding-custom-fields-to-the-category-editor)
- 0
- 2011-02-08
- Jan Fabry
-
これは、これを行うときに使用するチートシートです.1つの短いリストに関連するアクションフックとフィルターがあります. http://www.charlestonsw.com/adding-custom-fields-to-the-wordpress-category-interface/Here is a cheat sheet I use when doing this. It has the relevant action hooks & filters in one short list. http://www.charlestonsw.com/adding-custom-fields-to-the-wordpress-category-interface/
- 0
- 2013-02-03
- Lance Cleveland
-
3 回答
- 投票
-
- 2016-06-29
Wordpress 4.4以降、 add_term_meta()、 update_term_meta()およびget_term_meta()関数が追加されました.これは、MxmastaMillsによって提供されるコードを更新して、ハッキーなアプローチをはるかに少なくすることができることを意味します.
これが私の更新です.カスタムタイトルを追加したかったので、フィールドは1つだけですが、追加したいすべてのフィールドで同じように機能します.
function addTitleFieldToCat(){ $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th> <td> <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br /> <span class="description"><?php _e('Title for the Category '); ?></span> </td> </tr> <?php } add_action ( 'edit_category_form_fields', 'addTitleFieldToCat'); function saveCategoryFields() { if ( isset( $_POST['cat_title'] ) ) { update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']); } } add_action ( 'edited_category', 'saveCategoryFields');
As of Wordpress 4.4, the add_term_meta(), the update_term_meta() and get_term_meta() functions have been added. This means that the code as provided by MxmastaMills can be updated to use a far less hacky approach.
Here is my update of it. There is only one field as I wanted to add a custom title, but it'll work the same for all the fields you want to add.
function addTitleFieldToCat(){ $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th> <td> <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br /> <span class="description"><?php _e('Title for the Category '); ?></span> </td> </tr> <?php } add_action ( 'edit_category_form_fields', 'addTitleFieldToCat'); function saveCategoryFields() { if ( isset( $_POST['cat_title'] ) ) { update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']); } } add_action ( 'edited_category', 'saveCategoryFields');
-
注意すべき点はほとんどありません.`edited_category`フックでは、 `tag_ID`は` $ _GET`ではなく `$ _POST`配列にあります.また、 `add_term_meta`は、古いエントリを上書きするのではなく、実際に新しいエントリを追加します.代わりに `update_term_meta`を使用してください.Few things to note: in the `edited_category` hook, `tag_ID` will be in the `$_POST` array, not in the `$_GET`. Also `add_term_meta` will actually add a new entry instead of overriding a possible old one. Use `update_term_meta` instead.
- 2
- 2016-10-02
- Martin Dimitrov
-
@MartinDimitrov編集ボタンをクリックしてluke-simmonsの答えを修正できますか?このようにして、誰もが利用可能な最高のコードを使用できます.ありがとうございました!@MartinDimitrov Could you fix luke-simmons's answer by clicking on edit button? This way everyone can use the best code available, even who does not code very well (designer here!). Thank you!
- 0
- 2016-11-08
- Hugo
-
データをフォームに保存しませんIt doesn't save the data in the form
- 1
- 2017-05-11
- Dev
-
@Devはデータを保存しますが、2行目で$ _POSTを$ _GETに変更しない限り、データは表示されません.@Dev it does save data, it just don't show it unless you change $_POST to $_GET in second line.
- 0
- 2018-08-24
- banesto
-
- 2018-01-14
このコードは機能します:
add_action ( 'category_edit_form_fields', function( $tag ){ $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?> <tr class='form-field'> <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th> <td> <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'> <p class='description'><?php _e('Title for the Category '); ?></p> </td> </tr> <?php }); add_action ( 'edited_category', function( $term_id ) { if ( isset( $_POST['cat_title'] ) ) update_term_meta( $term_id , '_pagetitle', $_POST['cat_title'] ); });
This code works:
add_action ( 'category_edit_form_fields', function( $tag ){ $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?> <tr class='form-field'> <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th> <td> <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'> <p class='description'><?php _e('Title for the Category '); ?></p> </td> </tr> <?php }); add_action ( 'edited_category', function( $term_id ) { if ( isset( $_POST['cat_title'] ) ) update_term_meta( $term_id , '_pagetitle', $_POST['cat_title'] ); });
-
これは他のものよりも不器用ではなく、WordPress5.2.2で確認しましたThis is less clumsy than the other one and I just verified it with WordPress 5.2.2
- 0
- 2019-07-25
- nico gawenda
-
- 2011-02-07
Paul Menardは、彼のブログで用語メタを作成して使用する方法の例を提供しました...
WordPress3.0の新しい分類法のカスタムメタ .DBテーブルを作成したり、
$_POST
変数が設定されていることを確認したりする例はないため、これらの小さなことを自分で行う必要がありますが、その上に構築するのは適切なコードベースのようです.の... :)Paul Menard provided an example of how to create and use term meta in his blog...
Custom meta for new taxonomies in WordPress 3.0.There's no example of creating the DB table or checking
$_POST
vars are set, so you'll need to do those little things yourself, but it looks like a decent code base to build on top of ... :)
特定のカテゴリにカスタムフィールドを追加したいのですが. カテゴリには次のフィールドのみがあります:
名前:
スラッグ:
親:
説明:
TVシリーズのサイトがあるので、さらにフィールドを追加したいので、新しいカテゴリ(Category=Series)を作成するときにこのようなものが必要です
名前:
アーティスト:
年:
タイプ:
ジャンル:
概要:
スラッグ:
親:
説明:
など...
何か助けてください? よろしくお願いします.