首頁 >CMS教程 >&#&按 >在WordPress中添加元框

在WordPress中添加元框

Jennifer Aniston
Jennifer Aniston原創
2025-02-10 10:34:09690瀏覽

Adding Meta Boxes to Post Types in WordPress

WordPress網站建設者或開發者經常會用到元框(Meta Boxes)。本文將深入探討元框與自定義文章類型的關聯和集成,以及如何在WordPress前端使用元框中保存的數據。

核心要點

  • 使用add_meta_box()函數(掛載到add_meta_boxes動作)可以將元框添加到任何文章類型的編輯界面。此函數可用於將元框添加到多個文章類型(如文章、頁面和自定義文章類型“書籍”),或添加到所有現有及未來創建的文章類型。
  • 通過將文章類型名稱附加到add_meta_boxes動作鉤子,可以將元框限制在特定文章類型。 register_post_type()函數用於自定義文章類型,其參數數組包含register_meta_box_cb,其值為在設置元框時調用的回調函數。
  • global_notice_meta_box_callback函數包含元框的表單字段。 save_post動作鉤子處理在將文章保存為草稿或發佈時保存到文本區域的數據。通過在保存對應文章內容之前顯示元框輸入的數據,可以將這些數據有效利用。

將元框添加到文章類型屏幕

Narayan Prusty已涵蓋了創建元框的大多數(如果不是全部)PHP函數、參數和動作鉤子。

要將元框添加到任何文章類型的編輯屏幕,可以使用add_meta_box()函數並將其掛接到add_meta_boxes動作。

以下代碼將元框添加到文章編輯屏幕。請注意global_notice_meta_box_callback函數,該函數用於顯示元框中的表單字段。稍後我們將詳細介紹。

<code class="language-php">function global_notice_meta_box() {
    add_meta_box(
        'global-notice',
        __( '全局公告', 'sitepoint' ),
        'global_notice_meta_box_callback',
        'post'
    );
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

要將元框添加到多個文章類型屏幕(文章、頁面和自定義文章類型“書籍”),請創建一個文章類型數組,遍歷該數組,並使用add_meta_box()將其添加到這些文章類型中。

<code class="language-php">function global_notice_meta_box() {
    $screens = array( 'post', 'page', 'book' );
    foreach ( $screens as $screen ) {
        add_meta_box(
            'global-notice',
            __( '全局公告', 'sitepoint' ),
            'global_notice_meta_box_callback',
            $screen
        );
    }
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

要將元框添加到所有現有及未來創建的文章類型,請使用get_post_types()獲取文章類型數組,然後用它替換上面的$screen值。

<code class="language-php">function global_notice_meta_box() {
    $screens = get_post_types();
    foreach ( $screens as $screen ) {
        add_meta_box(
            'global-notice',
            __( '全局公告', 'sitepoint' ),
            'global_notice_meta_box_callback',
            $screen
        );
    }
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

也可以通過省略第三個($screen)參數來將元框添加到所有現有和新的文章類型:

<code class="language-php">function global_notice_meta_box() {
    add_meta_box(
        'global-notice',
        __( '全局公告', 'sitepoint' ),
        'global_notice_meta_box_callback'
    );
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

還可以通過將文章類型名稱(本例中為“book”)附加到add_meta_boxes動作鉤子來限制元框到特定文章類型:

<code class="language-php">function global_notice_meta_box() {
    add_meta_box(
        'global-notice',
        __( '全局公告', 'sitepoint' ),
        'global_notice_meta_box_callback'
    );
}
add_action( 'add_meta_boxes_book', 'global_notice_meta_box' );</code>

register_post_type()函數用於自定義文章類型,其參數數組中包含register_meta_box_cb,其值為在設置元框時調用的回調函數。

假設我們使用以下代碼創建了一個名為“book”的自定義文章類型:

<code class="language-php">function global_notice_meta_box() {
    add_meta_box(
        'global-notice',
        __( '全局公告', 'sitepoint' ),
        'global_notice_meta_box_callback',
        'post'
    );
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

global_notice_meta_box PHP 函數(上面register_meta_box_cb的值)中添加add_meta_box()函數定義將把元框添加到“book”自定義文章類型的編輯屏幕。

再次強調,這是我們的示例global_notice_meta_box函數。

<code class="language-php">function global_notice_meta_box() {
    $screens = array( 'post', 'page', 'book' );
    foreach ( $screens as $screen ) {
        add_meta_box(
            'global-notice',
            __( '全局公告', 'sitepoint' ),
            'global_notice_meta_box_callback',
            $screen
        );
    }
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

到目前為止,我們已經學習了在WordPress中註冊或添加元框的各種方法。我們還需要創建global_notice_meta_box_callback函數,該函數將包含我們元框的表單字段。

以下是global_notice_meta_box_callback函數的代碼,該函數將在元框中包含一個文本區域字段。

<code class="language-php">function global_notice_meta_box() {
    $screens = get_post_types();
    foreach ( $screens as $screen ) {
        add_meta_box(
            'global-notice',
            __( '全局公告', 'sitepoint' ),
            'global_notice_meta_box_callback',
            $screen
        );
    }
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

Adding Meta Boxes to Post Types in WordPress save_post動作鉤子處理在將文章保存為草稿或發佈時保存到文本區域的數據。

<code class="language-php">function global_notice_meta_box() {
    add_meta_box(
        'global-notice',
        __( '全局公告', 'sitepoint' ),
        'global_notice_meta_box_callback'
    );
}
add_action( 'add_meta_boxes', 'global_notice_meta_box' );</code>

為了使用在元框文本區域中輸入的數據,我們將在顯示其保存對應文章內容之前顯示該數據。

<code class="language-php">function global_notice_meta_box() {
    add_meta_box(
        'global-notice',
        __( '全局公告', 'sitepoint' ),
        'global_notice_meta_box_callback'
    );
}
add_action( 'add_meta_boxes_book', 'global_notice_meta_box' );</code>

代碼解釋

首先,我們創建了一個global_notice_before_post函數,並將其掛接到the_content過濾器,該過濾器帶有一個$content參數,其中包含文章內容。

在函數內部,我們包含了全局$post變量,該變量包含當前正在查看的文章的WP_Post對象。

通過get_post_meta檢索針對給定文章保存的全局公告,並將其保存到$global_notice變量中。

然後將公告包裝在一個div中並保存到$notice變量中。

最後,將包含全局公告的$notice與包含實際文章內容的$content連接起來。

以下是帶有文章內容之前的全局公告的文章屏幕截圖。

Adding Meta Boxes to Post Types in WordPress

總結

在本教程中,我們學習了在WordPress管理屏幕中註冊元框的多種方法,以及如何將它們限制在文章類型中。

我們還回顧瞭如何向元框添加表單字段,以及如何在保存或發布文章時保存輸入的數據。

最後,我們介紹瞭如何將輸入到元框中的數據付諸實踐。

在未來的文章中,我們將介紹如何向文章類型管理屏幕添加上下文幫助選項卡。

如果您有任何問題或建議,歡迎在評論中提出。

WordPress中向文章類型添加元框的常見問題

  • 什麼是WordPress中的元框? WordPress中的元框是在管理界面中顯示的可拖動框。這些框用於顯示附加的輸入字段,允許用戶自定義不同類型文章的功能和佈局。它們可以添加到文章、頁面和自定義文章類型。元框可以包含各種類型的字段,包括文本、複選框、選擇選項等等。

  • 如何在WordPress中向自定義文章類型添加元框? 要向WordPress中的自定義文章類型添加元框,需要使用add_meta_box()函數。此函數允許您指定元框ID、標題、回調函數、文章類型、上下文和優先級。回調函數用於輸出元框的內容。

  • 我能否向單個文章類型添加多個元框? 可以。每個元框都應具有唯一的ID,以避免衝突。您可以多次使用add_meta_box()函數並使用不同的參數來添加多個元框。

  • 如何保存輸入到元框字段中的數據? 要保存輸入到元框字段中的數據,需要將一個函數掛接到save_post動作。此函數應檢查nonce,驗證當前用戶的權限,然後使用update_post_meta()add_post_meta()函數將元框數據保存到數據庫。

  • 如何在前端顯示元框數據? 要在前端顯示元框數據,可以在循環中使用get_post_meta()函數。此函數從數據庫檢索元框數據並將其作為字符串返回,然後您可以在模板文件中將其輸出。

  • 我能否將元框添加到頁面以及文章? 可以。使用add_meta_box()函數時,可以將文章類型指定為“page”以向頁面添加元框。

  • 如何從文章類型中刪除元框? 可以使用remove_meta_box()函數。此函數需要元框ID和文章類型作為參數。

  • 我能否自定義元框在文章編輯屏幕中的位置? 可以。 add_meta_box()函數的context參數決定了元框的位置。可能的值為“normal”、“side”和“advanced”。

  • 我能否將元框添加到插件創建的自定義文章類型? 可以。您只需要知道自定義文章類型的slug,然後將其用作add_meta_box()函數中的post_type參數。

  • 如何設置元框及其字段的樣式? 可以使用CSS設置元框及其字段的樣式。元框將具有“postbox”類,您可以向元框中的字段添加您自己的類。然後,您可以在CSS中定位這些類以應用樣式。

以上是在WordPress中添加元框的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn