>
>層次分類法與類別類似,允許不同級別的條款(您可以將父母和子女分配為條款)。 非層次分類法的作用就像標籤一樣>您的自定義分類法可以讓您輸入以下每個條款
>的信息這是WordPress在您的條款方面將為您提供的全部。
>>默認信息可能是您的分類法所需的全部信息,但您可能需要保存其他信息,這些信息可以在網站上使用。
>> WordPress優惠是一系列掛鉤,可用於修改分類法屏幕的管理區域,並在保存其他信息的過程中為您提供幫助。
對於我們的教程,我們將擴展默認類別分類學。您可以輕鬆地擴展自己創建的內部分類法或分類法,但是為簡單起見,我們將修改現有的分類法。我們從哪裡開始?
>創建它們 在編輯您的分類法所綁定的帖子類型的同時,即
例如,您可以在類別管理菜單(通過定義名稱,slug,partend Description等)或直接在您的帖子或頁面中創建它們(通過使用該類別的菜單(通過使用該類別),您可以為類別分類的類別創建術語類別元框並動態添加一個新類別)。>由於我們將保存其他信息,因此我們需要修改兩個屏幕,以便我們可以連接,收集和與已保存的信息進行交互。
> 在本教程中,我們將添加其他表單元素,以便我們可以收集有關類別的更多信息。為此,我們將捕獲以下元素:這些是最常見的形式元素,應有助於您更好地了解如何擴展分類法以保存其他信息。
修改添加類別管理菜單我們需要使用類別_add_form_fields鉤。
>類別_ADD_FORM_FIELDS HONK用於將其他信息添加到類別管理屏幕中。該鉤子採用單個參數,這是分類法本身的名稱。此掛鉤使我們可以在添加類別屏幕上添加其他信息,因此首先我們需要定義一個顯示一些字段以供我們保存的函數。 以下代碼應輸入您的主題functions.php文件(或您用於自定義代碼的另一個文件)
>>現在我們已經定義了函數,我們需要做的就是將其連接到我們的category_add_form_fields鉤子,並且一旦顯示“添加類別”屏幕,它將立即激活。我們將通過調用add_action()函數來做到這一點。
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>
完成此操作後,您的類別管理屏幕應顯示您在功能中定義的其他字段。我的看起來如下:
作為旁注,當您定義字段以添加到屏幕中時,通常將它們包裹在形式類別中,這確保了包含的輸入元素涵蓋屏幕的完整寬度。如您在我們的示例中所看到的,除了無線電按鈕外,我還啟用了此類。我們不希望我們的廣播按鈕跨越全寬(因為看起來很奇怪)。
>
保存我們的新類別信息>現在我們已經修改了添加類別屏幕,我們需要保存其他信息,以便我們可以使用它。
在收集將直接用於更新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>
>使用此ID,我們可以調用get_term($ term_id,$ targ_id,$ sualthomy_name)函數。
此函數採用兩個參數,即術語本身的ID和分類名稱。由於我們知道該術語本身的ID,並且我們正在從事類別分類法上工作,因此我們現在將能夠訪問術語對象。
此功能允許我們在WordPress選項表中創建一個新條目,以便我們保存我們的值。所有這些功能需求都是新選項的名稱及其值。我們正在四次調用此功能,其中一個用於我們節省的新字段。
>
例如,如果我們要創建一個新的類別,稱為測試時,當我們保存文本方面字段時,選項名稱將成為term_category_textarea_test,我們的選擇字段選項將成為text_category_select_test等這些字段以確保沒有兩個值都可以相同(因為所有slugs都是唯一的)。現在,我們要做的就是將此功能連接到create_category掛鉤,我們進行了排序
修改編輯類別管理菜單
>現在我們已經在“添加類別”屏幕上顯示了新的字段元素並將其保存為選項,我們需要修改編輯屏幕並在此處預先填充我們的新值(因此,如果需要,可以更新它們)。 function save_extra_taxonomy_fields($term_id){ //collect all term related data for this new taxonomy $term_item = get_term($term_id,'category'); $term_slug = $term_item->slug; //collect our custom fields $term_category_text = sanitize_text_field($_POST['category-text']); $term_category_textarea = sanitize_text_field($_POST['category-textarea']); $term_category_select = sanitize_text_field($_POST['category-select']); $term_category_radio = sanitize_text_field($_POST['category-radio']); //save our custom fields as wp-options update_option('term_category_text_' . $term_slug, $term_category_text); update_option('term_category_textarea_' . $term_slug, $term_category_textarea); update_option('term_category_select_' . $term_slug, $term_category_select); update_option('term_category_radio_' . $term_slug, $term_category_radio); }
> cattory_edit_form_fields Hook用於將其他字段輸出到類別的編輯管理屏幕上。該鉤子帶有一個值,這是術語對象本身。由於此掛鉤將可以訪問術語對象本身,因此收集其信息非常簡單。
>我們需要創建一個功能,該函數將輸出我們的其他字段並用我們的信息預先填充它們。由於我們現在可以訪問該術語對象,這將很容易。
>此函數使用其傳遞在術語對像中的傳遞來訪問術語本身的slug。使用此slug,它使用theget_option($ option_name)函數搜索了我們的四個保存的自定義字段值。
>
此功能以指定名稱搜索一個選項並分配其值。在我們的情況下,我們正在尋找我們的四個字段值,並將它們分配給變量。<span>add_action('create_category','save_extra_taxonomy_fields');</span>
>此功能的最大部分是輸出我們的HTML形式元素,它們作為表元素添加。對於我們的每個字段,我們都會顯示標籤和適用的文本,Textarea,Select或Radio Elements。
>我們預先填充自定義字段的方式在我們所處理的每種類型中都不同。這是我們要做的
>
選擇字段 - 對於選擇字段,我們首先創建選擇元素及其所有相關選項。我們添加了稱為值的選擇元素的屬性,並用我們保存的值填充它(這與我們處理文本字段的方式非常相似)。即使我們將值輸出到選擇列表中,我們仍然需要確定最初選擇哪個選項。我們現在要做的是針對選擇元素中的每個選項,我們確定其值是否與我們收集的值相同,如果選擇它。我們使用基本的if語句,如果它們匹配我們將選定的屬性呼應該選項,這將使瀏覽器默認選擇此選項。確保正確填充這些值非常重要,就像您不選擇它們一樣,當用戶更新其術語時,他們的數據可能不一致。
我們要做的就是將我們的新功能連接到category_edit_form_fields鉤子,當我們單擊“條款的編輯屏幕”時,此功能將執行。連接此功能後,應更新您的類別編輯屏幕並顯示您的其他字段和值。我的看起來如下:
保存我們更新的類別信息
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>
當我們更新類別信息時,我們將需要一個函數來保存我們的新字段值。 值得慶幸的是,我們已經有一個功能。以前,我們創建了thesave_extra_taxonomy_fields($ TERM_ID)函數,我們在添加新類別術語時使用了。
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 - 在要保存新類別術語$ galsonomy_name_edit_form_fields
create_ $ galsonomy_name,
edit_members
>幾乎沒有限制您現在可以通過分類法實現的複雜性,因為您可以保存您喜歡的任何信息並根據需要輸出。
我如何擴展WordPress分類法?
>我如何在WordPress中創建自定義分類?在主題的functions.php文件中使用“ register_taxonomy”函數。此功能允許您定義自定義分類法的屬性,例如其名稱,標籤,以及它是否是層次結構。
>是的,您可以將自定義字段添加到內置的WordPress分類法(例如類別和標籤)中。這可以通過使用與自定義分類法添加自定義字段的相同函數和方法來完成。
>以上是擴展WordPress分類法的詳細內容。更多資訊請關注PHP中文網其他相關文章!