首頁 > CMS教程 > &#&按 > WordPress術語元和WP_TERM簡介

WordPress術語元和WP_TERM簡介

Jennifer Aniston
發布: 2025-02-15 09:45:11
原創
138 人瀏覽過

WordPress術語元和WP_TERM簡介

鑰匙要點

  • >由於WordPress 4.4,術語現在為對象,使添加,刪除和更新元數據更容易。在此之前,將元數據保存為分類法是一個複雜的過程,它需要保存元數據作為WP_OPTIONS表中的字段。
  • 使用術語元,add_term_meta,update_term_meta和delete_term_meta函數使用。這些功能與新的UI元素相結合,可以為術語保存和更新新的元數據。
  • 術語元數據可用於擴展術語,提供獨特的功能。示例包括將橫幅圖像添加到術語的頂部或提供元數據以有條件顯示的術語不同,例如根據顯示的術語加載新的模板文件。
  • > WordPress中的WP_TERM類是一個術語的面向對象表示。它提供了檢索和操縱術語數據的方法,包括術語元數據。該類可用於通過創建特定術語的類實例來處理術語元,然後使用類提供的方法來檢索,添加,更新或刪除該術語的元數據。
  • 在WordPress中,您可以輕鬆地將元數據保存在帖子,頁面和其他自定義內容類型中,但是保存元數據供您的分類法使用,曾經是一個過於復雜的過程(我什至在這裡寫了上一篇文章!)。

要獲得所有工作,您需要將任期元數據作為每個數據的WP_OPTIONS表中的字段保存為字段,這意味著您可能有數百個,如果不是數千個額外的條目,則術語或僅幾個定制分類法。

但是,由於WordPress 4.4及以後,術語現在為對象,與帖子,頁面和自定義內容類型相同。此更改使添加,刪除和更新您的元數據變得更加容易。

>

帶有術語meta

的背景故事

自從WordPress 2.8返回以來,社區一直在推動一種簡單的方法來控制術語元數據。這是一個緩慢的過程,但最終從頭開始重新設計了術語以使用班級結構。這加上WordPress 4.4的一些不同的更改意味著分類法(例如“標籤”,“類別”或“自定義”)中的術語現在可以輕鬆地分配給他們。

元數據操縱舊方法

在WordPress 4.4之前,沒有明確的方法可以輕鬆地為術語項目保存元數據,這是對構造方式的術語的固有限制。如果您要擴展分類法或條款,則必須將數據直接保存為使用Update_option的站點選項。 這不是理想的(因為它使選項表雜亂無章)。

>

>我已經寫過有關擴展分類法的文章,但是,它的基本知識是在您準備保存元數據時,您會稱呼看起來像這樣的功能:

>
//saving new fields for category
function save_extra_taxonomy_fields($term_id){
    $term = get_term($term_id);
    $term_slug = $term->slug; 
    //collect category image id from posted values
    $term_category_image_id = isset($_POST['category_image_id']) ? sanitize_text_field($_POST['category_image_id']) : ''; 
    //update value and save it as an option
    update_option('category_image_id_' . $term_slug, $term_category_image_id);
}
add_action('create_category','save_extra_taxonomy_fields');
登入後複製
登入後複製
在上面的示例中,我們執行附加到Create_Category Hook(創建新類別術語時觸發)的函數。這將尋找我們的價值,在消毒後將其作為選擇。雖然這起作用並不是很漂亮。

添加,更新和刪除術語元

要使用術語元,您將使用add_term_meta,update_term_meta和delete_term_meta函數。這些功能與新的UI元素結合使用,可以讓您為您的條款保存和更新新的元數據。

添加術語元

添加術語的元數據涉及add_term_meta函數。您需要使用可選的第四個參數指定三個參數。

    $ term_id - 您要保存此元數據的術語ID
  • $ META_KEY - 元數據的關鍵名稱。這就是您將如何引用數據
  • >
  • $ meta_value - 數據本身(記住要消毒)
  • $ unique(可選) - 如果元數據鍵應該是唯一的。默認情況下,這將設置為false,意味著,如果另一個鍵具有相同的名稱,則該功能將覆蓋它。將其設置為真實,以確保獨特性。
  • 作為一個例子,想像一下,對於我們的類別分類法中的每個術語,我們希望根據將多少帖子分配給此類別的新元數據。使用WordPress 4.4,我們可以循環循環所有術語,並保存此新元數據(供以後在我們的主題或插件中使用)。

讀取術語meta

function add_featured_to_categories(){

    //get all terms from the category taxonomy
    $taxonomy_name = 'category';
    $term_args = array(
        'orderby'       => 'name',
        'hide_empty'    => false,
        'fields'        => 'ids'
    );

    $terms = get_terms($taxonomy_name, $term_args);

    if($terms){

        $term_key = 'term_size';
        $term_value = 'empty';
        $term_unique = true;

        //go through all terms and set the new term meta
        foreach($terms as $term_id){

            $term = get_term($term_id, $taxonomy_name);
            $term_count = $term->count; 

            //determine new meta value
            if($term_count > 10){
                $term_value = 'big';
            }else if($term_count >= 5 && $term_count < 10){
                $term_value = 'medium';
            }else if($term_count >= 1 && $term_count < 5){
                $term_value = 'small';
            }

            //save meta value
            add_term_meta($term_id, $term_key, $term_value, $term_unique);  
        }
    }
}
add_action('init', 'add_featured_to_categories');
登入後複製
登入後複製
>我們可以使用get_term_meta函數讀取保存的術語元。該函數的工作方式與用於從帖子中獲取元數據的get_post_meta函數類似。 要使用此功能以指定一個強制性參數,並使用兩個可選參數。

$ term_id - 從

>獲取元數據的術語ID

$鍵(可選) - 您要返回的單個指定密鑰。如果未指定,則將返回所有元數據。
  • $ single(可選) - 如果將返回單個值或鍵或值對。默認為單個值。
  • >讓我們看一下您可能會發現這有用的另一種情況。
  • 考慮一種我們已經在類別分類法中為我們的每個條款節省的元項的情況。此保存的數據包含在查看術語時應顯示的圖像的URL。我們希望將此圖像顯示為術語描述或標題的橫幅,而在我們的帖子列表之上。

現在,在我們的類別中,或其他兒童主題模板文件,我們可以修改顯示我們的術語數據的功能。

在我的情況下,我正在使用二十四個問題進行編輯類別。

//given a term, collect its saved image to be displayed
function display_term_meta_image($term_id, $term_taxonomy){

    //get supplied term
    $term = get_term($term_id, $term_taxonomy); 
    if($term){

        $term_image_id = get_term_meta($term_id, 'term_image_id', true);
        if($term_image_id){
            //get the medium image size for display
            $term_image = wp_get_attachment_image_src($term_image_id, 'medium', false);
            echo '<img . $term_image[0] . '" title="' . $term->name . ' image"/>';
        }  
    }
}
登入後複製
這將在這樣的描述下顯示我們的照片:

>WordPress術語元和WP_TERM簡介

刪除術語元

>我們可以刪除術語元數據,與帖子相同。當我們使用delete_term_meta函數時,如果需要,我們需要提供兩個強制性參數。

    $ term_id - 術語的ID。
  • $ META_KEY - 將從該學期刪除的元密鑰。
  • > $ META_VALUE(可選) - 僅在值匹配此值時才刪除元數據。當您僅在匹配設置值時才要刪除此數據時,請使用此此操作。
  • >
  • 再次讓我們看一下您可以使用此情況的情況。想像一下您通過一個大型項目的一半,您已經將幾個元數據保存到了每個類別術語中。您已經發現其中一些數據不再需要,因此您可能應該清除它,以免它弄亂您的數據庫。

此功能將通過並刪除我們在$ wasse_term_keys變量中未指定的任何其他元數據,從而減少了數據庫中浪費的空間(對於我們有數十個元數據條目時,我們不再需要)。 > 與WordPress 4.3及以上的
//saving new fields for category
function save_extra_taxonomy_fields($term_id){
    $term = get_term($term_id);
    $term_slug = $term->slug; 
    //collect category image id from posted values
    $term_category_image_id = isset($_POST['category_image_id']) ? sanitize_text_field($_POST['category_image_id']) : ''; 
    //update value and save it as an option
    update_option('category_image_id_' . $term_slug, $term_category_image_id);
}
add_action('create_category','save_extra_taxonomy_fields');
登入後複製
登入後複製
向後兼容

>您真的很想向前推進這些新的元功能,但想掩蓋自己的舊版本,則可以創建一些有條件的功能以確保一切都可以。

我們首先調用函數_EXISTS,以確保定義新的add_term_meta函數。這僅適用於WordPress 4.4和更新。如果我們有支持,我們會使用簡單的add_term_meta函數將元數據分配給我們的術語。

>如果我們沒有支持,我們會抓住術語對象本身(通過術語ID中的術語),然後我們提取$ TERM_TAXONOMY數據並使用它來構建我們的最終鍵值。由於我們將保存到選項表中,我們需要確保密鑰是唯一的,因此我們通過將分類法名稱,術語ID和術語鍵添加到一個變量中來做到這一點。 我們必須確保密鑰的長度不超過64個字符,並將其修剪成。完成所有這些操作後,我們可以調用我們的add_option函數以節省我們的價值。 > 如您所見,這會變得很長,但是您確實會增加靈活性以支持較舊和較新的WordPress版本。
function add_featured_to_categories(){

    //get all terms from the category taxonomy
    $taxonomy_name = 'category';
    $term_args = array(
        'orderby'       => 'name',
        'hide_empty'    => false,
        'fields'        => 'ids'
    );

    $terms = get_terms($taxonomy_name, $term_args);

    if($terms){

        $term_key = 'term_size';
        $term_value = 'empty';
        $term_unique = true;

        //go through all terms and set the new term meta
        foreach($terms as $term_id){

            $term = get_term($term_id, $taxonomy_name);
            $term_count = $term->count; 

            //determine new meta value
            if($term_count > 10){
                $term_value = 'big';
            }else if($term_count >= 5 && $term_count < 10){
                $term_value = 'medium';
            }else if($term_count >= 1 && $term_count < 5){
                $term_value = 'small';
            }

            //save meta value
            add_term_meta($term_id, $term_key, $term_value, $term_unique);  
        }
    }
}
add_action('init', 'add_featured_to_categories');
登入後複製
登入後複製

將其全部包裝

使用這些新的元功能應使您更輕鬆地擴展您的術語以提供獨特的功能。例如,您可能需要在術語的頂部添加橫幅圖像或提供元數據,以便您可以有條件地以不同的方式顯示您的條款(例如,根據顯示的術語加載新的模板文件)。

>具有新術語元函數的靈活性和易度性,您可以立即開始在新項目中實現此功能!

>

經常詢問有關WordPress術語Meta

的問題(常見問題解答)

什麼是WordPress術語META?

WordPress項META是一項功能,它允許您將自定義元數據存儲在WordPress站點中。該元數據可以是其他任何要與該術語相關聯的信息,也可以是任何其他描述,圖像,顏色或任何其他信息。這是一個功能強大的工具,可以增強網站的功能和用戶體驗。

如何在wordpress中添加術語元?

​​

在WordPress中添加術語META,您可以使用add_term_meta( ) 功能。此功能採用三個必需的參數:術語ID,元密鑰(元字段的名稱)和元值。可選地,您還可以指定元密鑰是否應該是唯一的。

>

>我如何在WordPress中檢索術語元數據?

>

>您可以使用get_term_meta()function在WordPress中檢索術語元數據。此功能需要您要檢索的元字段的術語ID和鍵。它返回指定術語的元字段的值。

>我可以在wordpress中更新術語元嗎?

是的,您可以使用update_term_meta()function在WordPress中更新術語Meta。此功能需要術語ID,元密鑰和新的元值。如果該術語不存在元密鑰,則將添加。

>

>如何在WordPress中刪除術語META?

>您可以使用DELETE_TERM_META()函數在WordPress中刪除WordPress中的術語Meta 。此功能需要術語ID和META鍵。它刪除了給定術語的指定元字段。

> wordpress中的WP_TERM類是什麼?

> WordPress中的WP_TERM類是一個術語的面向對象的表示。它提供了檢索和操縱術語數據的方法,包括術語meta。

>我如何使用WP_TERM類使用術語元?通過為特定術語創建類的實例,然後使用類提供的方法來檢索,添加,更新或刪除該術語的元數據。

>在WordPress?

> WordPress中的術語元素可用於多種目的,例如將其他信息添加到類別或標籤中,為術語創建自定義字段,增強搜索功能等等。我可以使用WordPress中的自定義分類法的術語元素嗎?術語元函數可與任何分類法(包括自定義的分類法)一起使用。

>是否有任何可以幫助我在WordPress中管理術語元的插件?

是的,有幾個可用的插件可以為您提供幫助在WordPress中管理術語元。這些插件提供了添加,更新和刪除術語元的用戶友好接口,這使得那些不滿意編碼的人更容易。

>

以上是WordPress術語元和WP_TERM簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板