2

カテゴリを作成しながらカスタム メタ フィールドを追加し、WordPress のループでそれらを取得する方法を知っている人はいますか? どうすればWordPressのコアをハックせずに済むのだろうと思っていたのですが、ハッキングしておけば今後WordPressを更新する際の邪魔にはなりません。

私が見つけた近いプラグインはWp-Category-Metaですが、カテゴリの編集のフィールドとしてチェックボックスを追加する機能はありません。

スクリーンショット

これは、ユーザーが特定のカテゴリを「おすすめ」にすることができ、コードがそのメタ値をループ内で使用して、「おすすめ」カテゴリのスタイルを変えることができるため、非常に便利です。

4

4 に答える 4

3

問題: Wordpress には、タクソノミーの「メタ」値を格納するための構造もメソッドもありません。

UPDATE 2017: WP 4.4+ には「用語メタ」があります!

用語のメタを操作するには、次を使用します。
update_term_meta()
get_term_meta()
delete_term_meta()
add_term_meta()

ただし、以下のアクションは引き続き有効です。:)

追加資料: 4.4 タクソノミーのまとめ

WP バージョン <= 4.3.x および共通アクションの解決策

行動:

  1. create_categoryおよびedit_categoryカテゴリ編集用
  2. category_add_form_fieldsおよびcategory_edit_formカテゴリフォームフィールド用

私が提示したよりも多くのアクションがありますが、それらは非推奨のようです(developer.wordpress.org によると)。

私が選択したアクションを選択した理由:
- それらは WordPress 4.4.2 で動作します
- ドキュメントがないため、これらは廃止されたものを置き換える新しいものだと思いました...

機能:

  1. get_option( $option, $default );
  2. 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 ); 

作成または編集しますか?

カテゴリを作成しているのか、保存しているのか疑問に思うかもしれません - これは (私が知る限り) まだ文書化されていませんが、テストから:

  1. Edit save =>$tag_objectにはobject、いくつかのプロパティが含まれています。最も顕著なのは次のとおりです。
    • term_id
    • taxonomy
    • filter
  2. Create save =>$tag_objectは通常のstring「カテゴリ」です。これは将来変更される可能性があります...

一般的な分類法

一般的なタクソノミに対しては、このようなアクションもあります。これらのアクションを確認してください。

于 2016-03-16T10:29:58.307 に答える
2

Jaz、元の質問で言及したプラグインが更新され、チェックボックスフィールドが含まれるようになりました(v1.2.3 に含まれています

于 2011-05-17T19:12:32.570 に答える
1

カテゴリSEOメタタグプラグインが役立つと思います。

于 2011-05-16T12:21:47.070 に答える
1

このプラグインの更新およびリファクタリングされたバージョンは、次の場所にあります。

https://wordpress.org/plugins/custom-taxonomy-category-and-term-fields/

また、WYSIWYG エディターのフィールド タイプも追加されました。

于 2014-07-20T09:10:27.230 に答える