カテゴリエディタにカスタムフィールドを追加する例はありますか?
1 回答
- 投票
-
- 2011-01-08
いいえ. wp_term_taxonomyテーブルに新しいフィールドを作成できないため、
wp_options
を使用する必要があります(作成すると、次のWPアップデートでそれらが失われます).だから:
// the option name define('MY_CATEGORY_FIELDS', 'my_category_fields_option'); // your fields (the form) add_filter('edit_category_form', 'my_category_fields'); function my_category_fields($tag) { $tag_extra_fields = get_option(MY_CATEGORY_FIELDS); ?> <table class="form-table"> <tr class="form-field"> <th scope="row" valign="top"><label for="_ce4-categoryTitle">Full Category Title</label></th> <td><input name="_ce4-categoryTitle" id="_ce4-categoryTitle" type="text" size="40" aria-required="false" value="<?php echo $tag_extra_fields[$tag->term_id]['my_title']; ?>" /> <p class="description">The title is optional but will be used in place of the name on the home page category index.</p></td> </tr> <tr class="form-field"> <th scope="row" valign="top"><label for="_ce4_fullDescription">Full Category Text for Landing Page</label></th> <td><textarea style="height:70px; width:100%;margin-left:-5px;" name="_ce4_fullDescription" id="_ce4_fullDescription"><?php echo $tag_extra_fields[$tag->term_id]['my_description']; ?></textarea> <p class="description">This text will appear on the category landing page when viewing all articles in a category. The image, you supply above, if any, will be used here and this content will wrap around it.</p></td> </tr> </table> <?php } // when the form gets submitted, and the category gets updated (in your case the option will get updated with the values of your custom fields above add_filter('edited_terms', 'update_my_category_fields'); function update_my_category_fields($term_id) { if($_POST['taxonomy'] == 'category'): $tag_extra_fields = get_option(MY_CATEGORY_FIELDS); $tag_extra_fields[$term_id]['my_title'] = strip_tags($_POST['_ce4-categoryTitle']); $tag_extra_fields[$term_id]['my_description'] = strip_tags($_POST['_ce4_fullDescription']); update_option(MY_CATEGORY_FIELDS, $tag_extra_fields); endif; } // when a category is removed add_filter('deleted_term_taxonomy', 'remove_my_category_fields'); function remove_my_category_fields($term_id) { if($_POST['taxonomy'] == 'category'): $tag_extra_fields = get_option(MY_CATEGORY_FIELDS); unset($tag_extra_fields[$term_id]); update_option(MY_CATEGORY_FIELDS, $tag_extra_fields); endif; }
最後の2つにはカテゴリ関連のフックがあるかもしれませんが、私はそれらを検索しませんでした.管理者がカスタム分類用語に画像を添付できる私の古いテーマから上記のコードを適応させました...
No. You have to use
wp_options
, because you can't create new fields in the wp_term_taxonomy table (If you do, in the next WP update you'll loose them).So:
// the option name define('MY_CATEGORY_FIELDS', 'my_category_fields_option'); // your fields (the form) add_filter('edit_category_form', 'my_category_fields'); function my_category_fields($tag) { $tag_extra_fields = get_option(MY_CATEGORY_FIELDS); ?> <table class="form-table"> <tr class="form-field"> <th scope="row" valign="top"><label for="_ce4-categoryTitle">Full Category Title</label></th> <td><input name="_ce4-categoryTitle" id="_ce4-categoryTitle" type="text" size="40" aria-required="false" value="<?php echo $tag_extra_fields[$tag->term_id]['my_title']; ?>" /> <p class="description">The title is optional but will be used in place of the name on the home page category index.</p></td> </tr> <tr class="form-field"> <th scope="row" valign="top"><label for="_ce4_fullDescription">Full Category Text for Landing Page</label></th> <td><textarea style="height:70px; width:100%;margin-left:-5px;" name="_ce4_fullDescription" id="_ce4_fullDescription"><?php echo $tag_extra_fields[$tag->term_id]['my_description']; ?></textarea> <p class="description">This text will appear on the category landing page when viewing all articles in a category. The image, you supply above, if any, will be used here and this content will wrap around it.</p></td> </tr> </table> <?php } // when the form gets submitted, and the category gets updated (in your case the option will get updated with the values of your custom fields above add_filter('edited_terms', 'update_my_category_fields'); function update_my_category_fields($term_id) { if($_POST['taxonomy'] == 'category'): $tag_extra_fields = get_option(MY_CATEGORY_FIELDS); $tag_extra_fields[$term_id]['my_title'] = strip_tags($_POST['_ce4-categoryTitle']); $tag_extra_fields[$term_id]['my_description'] = strip_tags($_POST['_ce4_fullDescription']); update_option(MY_CATEGORY_FIELDS, $tag_extra_fields); endif; } // when a category is removed add_filter('deleted_term_taxonomy', 'remove_my_category_fields'); function remove_my_category_fields($term_id) { if($_POST['taxonomy'] == 'category'): $tag_extra_fields = get_option(MY_CATEGORY_FIELDS); unset($tag_extra_fields[$term_id]); update_option(MY_CATEGORY_FIELDS, $tag_extra_fields); endif; }
There might be some category-related hooks for the last two, I didn't search for them. I just adapted the code above from a old theme of mine in which the admin can attach a image to a custom taxonomy term...
-
@AA:ありがとう、これはうまくいきます!カテゴリアーカイブページを表示しているときに、タイトルの値をどのように取得しますか?@AA: Thanks, this works great! How would you retrieve the value for the title when you are viewing the category archive page?
- 0
- 2011-01-11
- Scott B
-
`get_option(MY_CATEGORY_FIELDS)`を使用するusing `get_option(MY_CATEGORY_FIELDS)`
- 0
- 2011-01-11
- onetrickpony
-
私はこのコードを使用しましたが、うまく機能します.追加したいフィールドが[カテゴリの追加]ボタンの下に配置されていることがわかりました.ボタンの上に新しいフィールドを表示する方法を知っていますか?コードからテーブルを削除して、trとtdを残してみましたが、機能しませんでしたI used this code and it works great. I found that the field I want to add gets put below the add category button. Do you know a way to get the new fields to show above the button? I tried removing the table from the code and just left the tr and td but that didn't work
- 0
- 2012-09-25
- Jamie
-
はい、どうやらWPには、使用できる新しいアクションがあります.`edit_category_form`の代わりに主に`edit_category_form_fields`.[edit_tags.php](http://core.svn.wordpress.org/trunk/wp-admin/edit-tags.php)を参照してくださいyes, apparently WP has new actions now which you can use. Mainly `edit_category_form_fields` instead of `edit_category_form`. See [edit_tags.php](http://core.svn.wordpress.org/trunk/wp-admin/edit-tags.php)
- 0
- 2012-09-25
- onetrickpony
-
add_action(
. "_ add_form_fields"、my_action)を使用して、カテゴリフォームエディタを拡張します.つまり、分類タイプ「store」のカスタムアクションフックのオブジェクトコンテキスト内のadd_action( "store_add_form_fields"、array($this、 'add_form_fields)).WordPressのバージョン3.X +は、アクションフックに 形式を優先し、古いスタイルの「edit_category_form_fields」などはコードで「レガシーサポート」としてマークされます.つまり、最終的にはなくなる可能性があります..参照:http://core.trac.wordpress.org/browser/tags/3.4.2/wp-admin/edit-tags.php Use add_action(."_add_form_fields",my_action) to extend the category form editor. i.e. add_action("store_add_form_fields",array($this,'add_form_fields)) in an object context for your custom action hooks for a taxonomy type of 'store'. Version 3.X+ of WordPress prefers the format for action hooks, the older style of "edit_category_form_fields" and others are marked as "legacy support" in the code, which means they may/will eventually go away. ref: http://core.trac.wordpress.org/browser/tags/3.4.2/wp-admin/edit-tags.php - 0
- 2012-10-03
- Lance Cleveland
私はこのナッツを割るのにかなり近いと思います:)
カテゴリエディタにカスタムフィールドのセットを追加しようとしています.ポストメタを扱っていないので、カスタムカテゴリフィールドの値をwp_optionsテーブルではなくwp_term_taxonomyテーブルに書き込むと思います.これは正しいですか?
これを行う方法の例がある場合は、リンクまたはコードを共有してください.カスタムカテゴリフィールドをキャプチャして保存する方法がわかりません.
これが私のコードです...