ホームページ >CMS チュートリアル >&#&プレス >WordPressの分類法を拡張します
階層分類法は、カテゴリと同様の行動を起こし、異なるレベルの用語を許可します(親と子供を用語に割り当てることができます)。 非階層分類法は、すべての用語が同じフラットレベルであるタグのように機能します。
あなたのカスタム分類法では、各用語に次の情報を入力できます分類法の拡張
チュートリアルでは、デフォルトのカテゴリの分類法を拡張します。あなたが作成した組み込みの分類法または分類法の両方を簡単に拡張できますが、簡単にするために、既存の分類法を変更します。
どこから始めますか?WordPressは、分類法の条件を作成するための2つの主要な方法を提供します。
分類管理画面を介してそれらを作成します
条件に関する追加情報を保存したいので、条件を追加、編集、削除するための最良の方法を提供するため、分類管理画面を使用します。
何を変更する必要がありますか?これらは最も一般的な形式の要素であり、追加情報を保存するために分類法を拡張する方法についてよりよく理解するのに役立つはずです。
追加カテゴリ管理メニューの変更category_add_form_fields hookを使用する必要があります
category_add_filed_fieldsフックは、カテゴリ管理画面に追加情報を追加するために使用されます。このフックは、分類自体の名前である単一のパラメーターを取り入れます。このフックにより、追加情報を追加カテゴリ画面に追加できるため、最初に保存するためのいくつかのフィールドを表示する関数を定義する必要があります。 次のコードは、テーマのfunctions.phpファイル(またはカスタムコードに使用する別のファイル)に移動する必要があります。関数が定義されたので、必要なのはカテゴリ_add_filedsフックに接続するだけで、追加カテゴリ画面が表示されるとすぐにアクティブになります。これを行い、add_action()function。
を呼び出します add_action( 'category_add_fileds'、 'add_extra_fields_to_category');
これを完了すると、カテゴリ管理画面は、機能で定義した追加のフィールドを表示する必要があります。鉱山は次のように見えます:function add_extra_fields_to_category($taxonomy_name){ ?> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-text"</span>></span>Category Text Field<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="text"</span> name<span>="category-text"</span> id<span>="category-text"</span>/></span> </span> <span><span><span><p</span>></span>This is a text field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-textarea"</span>></span>Category Textarea Field<span><span></label</span>></span> </span> <span><span><span><textarea</span> name<span>="category-textarea"</span> id<span>="category-textarea"</span>></span><span><span></textarea</span>></span> </span> <span><span><span><p</span>></span>This is a textarea field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-select"</span>></span>Category Select Field<span><span></label</span>></span> </span> <span><span><span><select</span> name<span>="category-select"</span> id<span>="category-select"</span>></span> </span> <span><span><span><option</span> value<span>="select-value-one"</span>></span> Value One <span><span></option</span>></span> </span> <span><span><span><option</span> value<span>="select-value-two"</span>></span> Value Two <span><span></option</span>></span> </span> <span><span><span></select</span>></span> </span> <span><span><span><p</span>></span>This is a select field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="category-radio-value-one"</span>></span>Category Radio Value One<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-one"</span> value<span>="category-radio-value-one"</span>/></span> </span> <span><span><span><label</span> for<span>="category-radio-value-two"</span>></span>Category Radio Value Two<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-two"</span> value<span>="category-radio-value-two"</span>/></span> </span> <span><span><span><p</span>></span>This is a radio field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>
サイドノートとして、フィールドを定義して画面に追加すると、通常、フォームフィールドクラス内でそれらを包みます。これにより、含まれる入力要素が画面の全幅に及ぶことが保証されます。私たちの例でわかるように、ラジオボタンを除いてこのクラスを有効にしました。ラジオボタンに全幅に及ぶことは望ましくありません(奇妙に見えるので)。
さらに、クラスフォームが必要になった場合、新しい用語を追加する前に要素が入力されることを保証します。 新しいカテゴリ情報の保存
追加カテゴリ画面を変更したので、使用できるように追加情報を保存する必要があります。
セーブアクションをトリガーするために別のフックに関数を接続する必要があります。このフックはcreate_categoryと呼ばれます。作成したこの関数は、用語情報の保存を処理します。WordPressデータベースの更新に直接使用される情報を収集する場合、値を消毒することは常に良い習慣です。 「sanitize_text_field($ string)」を使用して文字列をサニタイズし、すべてのタグを削除し、
function add_extra_fields_to_category($taxonomy_name){ ?> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-text"</span>></span>Category Text Field<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="text"</span> name<span>="category-text"</span> id<span>="category-text"</span>/></span> </span> <span><span><span><p</span>></span>This is a text field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-textarea"</span>></span>Category Textarea Field<span><span></label</span>></span> </span> <span><span><span><textarea</span> name<span>="category-textarea"</span> id<span>="category-textarea"</span>></span><span><span></textarea</span>></span> </span> <span><span><span><p</span>></span>This is a textarea field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-select"</span>></span>Category Select Field<span><span></label</span>></span> </span> <span><span><span><select</span> name<span>="category-select"</span> id<span>="category-select"</span>></span> </span> <span><span><span><option</span> value<span>="select-value-one"</span>></span> Value One <span><span></option</span>></span> </span> <span><span><span><option</span> value<span>="select-value-two"</span>></span> Value Two <span><span></option</span>></span> </span> <span><span><span></select</span>></span> </span> <span><span><span><p</span>></span>This is a select field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="category-radio-value-one"</span>></span>Category Radio Value One<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-one"</span> value<span>="category-radio-value-one"</span>/></span> </span> <span><span><span><label</span> for<span>="category-radio-value-two"</span>></span>Category Radio Value Two<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-two"</span> value<span>="category-radio-value-two"</span>/></span> </span> <span><span><span><p</span>></span>This is a radio field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>sanitize_text_fieldは、これらの値に対して完全に機能します。ただし、さまざまなデータ型を処理するための追加の機能は、http://codex.wordpress.org/data_validationです。ライアン・ヘリアーが彼のアドバイスとコメントをしてくれてありがとう この関数には1つのパラメーターが含まれます。新しい用語のIDが保存されています。
このIDを使用すると、get_term($ term_id、$ taxonomy_name)functionを呼び出すことができます。
この関数には、用語自体のIDと分類名の2つのパラメーターが含まれます。用語自体のIDを知っているため、カテゴリの分類法に取り組んでいることがわかっているため、オブジェクトという用語にアクセスできるようになります。用語オブジェクトからスラグ値を収集して保存します。次に、$ _POSTオブジェクトから4つの新しいフィールド値すべてを収集します。最後に、update_option($ option_name、$ option_value)と呼ばれる別の関数を呼び出しました。
この関数を使用すると、WordPressオプションテーブルに新しいエントリを作成して、価値を保存できるようにします。この関数が必要とするのは、新しいオプションの名前とその値です。私たちはこの関数を4回、私たちが節約している新しいフィールドごとに1つと呼んでいます。
たとえば、テキストアレアフィールドを保存するときにテストと呼ばれる新しいカテゴリを作成する場合、オプション名はTerm_category_textarea_testになり、選択フィールドオプションはtext_category_select_testなどになります。これらのフィールドは、2つの値が同じであることを保証するために(すべてのナメクジが一意であるため)
編集カテゴリ管理メニューの変更
追加カテゴリ画面に表示され、オプションとしてこれらを保存した新しいフィールド要素があるため、編集画面を変更して新しい値を事前に入力する必要があります(必要に応じて更新できます)。 🎜>
追加のフィールドを表示するには、category_edit_form_fieldsフックに接続する必要があります。
category_edit_formsフックは、カテゴリの編集管理画面に追加のフィールドを出力するために使用されます。このフックは、1つの値を取ります。これはオブジェクトという用語自体です。このフックはオブジェクトという用語自体にアクセスできるため、その情報を収集するのは非常に簡単です。追加のフィールドを出力し、情報を事前に入力する関数を作成する必要があります。オブジェクトという用語にアクセスできるようになったので、これは簡単です。
<span>function save_extra_taxonomy_fields($term_id){ </span> <span>//collect all term related data for this new taxonomy </span> <span>$term_item = get_term($term_id,'category'); </span> <span>$term_slug = $term_item->slug; </span> <span>//collect our custom fields </span><span>$term_category_text = sanitize_text_field($_POST['category-text']); </span><span>$term_category_textarea = sanitize_text_field($_POST['category-textarea']); </span><span>$term_category_select = sanitize_text_field($_POST['category-select']); </span><span>$term_category_radio = sanitize_text_field($_POST['category-radio']); </span> <span>//save our custom fields as wp-options </span><span>update_option('term_category_text_' . $term_slug, $term_category_text); </span><span>update_option('term_category_textarea_' . $term_slug, $term_category_textarea); </span><span>update_option('term_category_select_' . $term_slug, $term_category_select); </span><span>update_option('term_category_radio_' . $term_slug, $term_category_radio); </span> <span>}</span>
カスタムフィールドを事前に入力する方法は、処理中のタイプごとに異なります。これが私たちがしていることです
Textareaフィールド - Textareaフィールドの場合、タグの間にその値を直接エコーします。これは、その値をTextarea要素に直接出力します。
無線フィールド - 無線フィールドの場合、ページに直接出力し、保存された値と一致するかどうかを判断します。その場合、BASIC IFステートメントを使用してチェックされた属性をそれに出力すると、この属性はブラウザ選択この値をデフォルトで選択します(多くの点で、これは選択された要素と同様に処理されます。これは、表示するオプションをブラウザに伝える必要があるためです)
これらの値が正しく事前に入力されていることを確認することは、ユーザーが用語を更新するときにデータを選択しないかのように非常に重要です。
私たちがしなければならないのは、新しい関数をcategory_edit_form_fieldsフックに接続することです。この関数は、編集画面をクリックすると実行されます。更新されたカテゴリ情報を保存する
カテゴリを別のフックに接続してカテゴリを更新するときに、この関数を呼び出すことができます。 save_extra_taxonomy_fields関数をedit_categoryフックに追加します。カテゴリを更新すると、この関数は情報を保存します。
function add_extra_fields_to_category($taxonomy_name){ ?> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-text"</span>></span>Category Text Field<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="text"</span> name<span>="category-text"</span> id<span>="category-text"</span>/></span> </span> <span><span><span><p</span>></span>This is a text field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-textarea"</span>></span>Category Textarea Field<span><span></label</span>></span> </span> <span><span><span><textarea</span> name<span>="category-textarea"</span> id<span>="category-textarea"</span>></span><span><span></textarea</span>></span> </span> <span><span><span><p</span>></span>This is a textarea field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="form-field"</span>></span> </span> <span><span><span><label</span> for<span>="category-select"</span>></span>Category Select Field<span><span></label</span>></span> </span> <span><span><span><select</span> name<span>="category-select"</span> id<span>="category-select"</span>></span> </span> <span><span><span><option</span> value<span>="select-value-one"</span>></span> Value One <span><span></option</span>></span> </span> <span><span><span><option</span> value<span>="select-value-two"</span>></span> Value Two <span><span></option</span>></span> </span> <span><span><span></select</span>></span> </span> <span><span><span><p</span>></span>This is a select field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="category-radio-value-one"</span>></span>Category Radio Value One<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-one"</span> value<span>="category-radio-value-one"</span>/></span> </span> <span><span><span><label</span> for<span>="category-radio-value-two"</span>></span>Category Radio Value Two<span><span></label</span>></span> </span> <span><span><span><input</span> type<span>="radio"</span> name<span>="category-radio"</span> id<span>="category-radio-value-two"</span> value<span>="category-radio-value-two"</span>/></span> </span> <span><span><span><p</span>></span>This is a radio field <span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>カスタム分類法の拡張
カスタム分類法は、組み込みの分類法(カテゴリとタグ)とまったく同じ邸宅で拡張できます。
あなたがする必要がある唯一の変更は、使用されるフックの名前にあります。カテゴリの場合、次のフックを使用します
category_add_fileds - カテゴリにフィールドを追加する新しい用語画面
$ taxonomy_name_add_form_fields
$ taxonomy_name_edit_form_fields
create_members、
好きな情報を保存して必要に応じて出力できるので、今では分類法で達成できる複雑さに関しては事実上制限はありません。
WordPressの分類法を拡張するにはどうすればよいですか?
プラグインを使用してWordPressの分類法を拡張できますか?分類法。これらのプラグインは、分類法にカスタムフィールドを追加し、新しいタイプの分類法を作成し、分類に関連する他の機能を提供できます。いくつかの一般的な分類プラグインには、高度なカスタムフィールド、カスタムポストタイプUI、および分類条件の注文が含まれます。テーマのfunctions.phpファイルで「register_taxonomy」関数を使用します。この関数により、その名前、ラベル、階層的かどうかなど、カスタム分類法のプロパティを定義できます。 >階層分類法は、WordPressのカテゴリのように、親と子の用語を持つことができる分類法です。非階層分類法は、WordPressのタグなど、親と子の用語を持つことのできない分類法です。作成することを選択した分類法の種類は、コンテンツの整理方法によって異なります。
はい、カテゴリやタグなどの内蔵WordPress分類法にカスタムフィールドを追加できます。これは、カスタムフィールドをカスタム分類法に追加するために使用するのと同じ機能と方法を使用することで実行できます。 「Orderby」および「Order」パラメーターを使用して「get_terms」関数を使用します。また、分類項などのプラグインを使用して、WordPress管理者の分類項の順序を簡単に変更することもできます。分類法を使用して、カスタムポストタイプアーカイブを作成できます。これは、カスタム投稿タイプに関連付けられた分類法を作成し、「wp_query」クラスの「分類」パラメーターを使用して、その分類法の投稿を取得することで実行できます。
以上がWordPressの分類法を拡張しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。