首页 >CMS教程 >WordPress >在WordPress中添加元框

在WordPress中添加元框

Jennifer Aniston
Jennifer Aniston原创
2025-02-10 10:34:09691浏览

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