Code前端首页关于Code前端联系我们

使用本机 WordPress 自定义字段(5 个有用示例)

terry 2年前 (2023-09-24) 阅读数 59 #后端开发

WordPress 自定义字段是可应用于 WordPress 帖子、页面和自定义帖子类型的任意数据片段。元数据采用键/值对的形式。例如。

  • 键。 标题/值。 它们不仅仅是破解的
  • 钥匙。 header_color_override / 值。 #e52e05
  • 钥匙。 property_url / 值。 https://example.com/123

WordPress 有自己的有关此功能的文档,所以我不想复制它。我只是想向您展示 WordPress 中的自定义字段、它们的工作原理、如何使用它们,以及我个人经验中的一些用例。

如何在WordPress中添加/编辑/删除自定义字段

WordPress中自定义字段的用户界面是这样的。

WordPress使用本地自定义字段(5个有用例子)

如果您没有看到它,您可能需要转到三点首选项菜单,找到自定义字段开关,然后将其打开。

WordPress使用本地自定义字段(5个有用例子)

打开和关闭该功能时,用户界面会强制您刷新页面。

要添加自定义字段,请输入键(标记为“名称”)和值,然后单击添加自定义字段

WordPress使用本地自定义字段(5个有用例子)

添加后,您可以使用键/名称下方的按钮删除或更新它。

WordPress使用本地自定义字段(5个有用例子)

使用自定义字段后,按键会创建一个下拉菜单,以便于选择。

WordPress使用本地自定义字段(5个有用例子)

为什么要使用自定义字段?

自定义字段和自定义帖子类型 使 WordPress 成为内容管理系统 - - 博客平台。

在 CSS-Tricks,无论您相信与否,我们在该网站上使用了 100 多个自定义字段来实现各种目的。我们倾向于将它们用于相对简单的事情,这很好,因为它是 WordPress 的核心功能,可以永远工作,而无需担心兼容性或令人尴尬的技术债务。

最重要的想法是 打开模板选项。想象一下您有一个房地产列表页面,它确实如此。

  • 地址
  • 房价
  • 卧室
  • 卫生间

使用自定义字段,您可以将所有这些信息作为离散的小数据片段提供,并随时在页面模板中显示。 这比 将所有数据放入文章内容本身 更加灵活,甚至使用块编辑器也是如此。

WordPress 自定义字段的用例

WordPress 自定义字段可以用于许多不同的事情!但让我们看五个例子。但让我们看一下我们在 CSS-Tricks 中实现的五个实际用例。

1。显示附加信息

假设您发布了一个视频并想要显示该视频的播放时间。很简单,只需更改 running_time 并将其显示在您想要的位置即可。

WordPress使用本地自定义字段(5个有用例子)

请注意此处使用的其他自定义字段,例如 youtube 字段,我们有此字段,因此我们可以在其中写入

2。隐藏/显示不同的内容/功能

假设您有时想要 折叠不同博客文章的评论部分。您可以设置名为 should_toggle_comments 的自定义字段,并将值设置为 true。这就是我们在 CSS-Tricks 所做的事情。在我们的模板 comments.php 中,我们为所有评论编写

    ,但如果存在此自定义字段,我们会将整个字段包装在 元素中默认情况下。

    <?php if (get_post_meta($post->ID, 'should_toggle_comments', true)) { ?>
    <details class="open-all-comments">
      <summary>Toggle All Comments (there are a lot!)</summary>
      <?php } ?>
    
        <ol class="commentlist" id="commentlist">
          <?php wp_list_comments('type=comment&avatar_size=512&callback=csstricks_comment'); ?>
        </ol>
    
      <?php if (get_post_meta($post->ID, 'should_toggle_comments', true)) { ?>
      </details>
    <?php } ?>
    复制代码

    3。特殊引号

    假设您有一个特殊的类别配置文件,显示一组包含相同类别的帖子,然后使用该类别的自定义模板,例如 category-fancypants.php 。也许可以从每个帖子中提取您自己的引用作为名为 main-pullquote 的自定义字段。

    <blockquote>
      <?php
        echo get_post_meta($post->ID, 'main-pullquote', true);
      ?>
    </blockquote>
    复制代码

    这就是我们为年度年终系列所做的。

    WordPress使用本地自定义字段(5个有用例子)

    4。 RSS 源自定义

    我们使用 CSS 技巧创建了几个完全自定义的 RSS 源,这些技巧与 WordPress 提供的技术不同 - 一个用于视频,一个用于新闻通讯。特别是,视频源依赖于一些自定义 WordPress 字段来输出使该源成为我们的视频播客源所需的特殊数据。

    WordPress使用本地自定义字段(5个有用例子)

    视频的位置和持续时间保存在各自的字段中。

    5。隐藏/显示作者

    我们赞助的 CSS-Tricks 文章有时会作为公司公告撰写。它们是故意这样写的,并且在实际发布时可能是由多人编写的。此类帖子实际上可能不是人类“写”的。然而,有时赞助文章肯定是由特定的人写的,有时甚至是第一人称写的,不显示署名会很奇怪。因此,我们使用自定义字段 showSponsorAuthor 来向作者显示我们是否需要它。

    <div class="sponsored-post-byline">
      ❥ Sponsored
      <?php if (get_post_meta($post->ID, 'showSponsorAuthor', true)) { ?>
        (Written by <?php the_author(); ?>)
      <?php } ?>
    </div>
    复制代码

    以上是模板的一部分。我们总是在侧边栏中将赞助文章标记为赞助(示例),但仅选择性地显示作者(示例),由自定义字段控制。

    用于在 WordPress 中显示自定义字段的 API

    大多数情况下,您希望显示单个字段的值。结尾

    <?php echo get_post_meta($post->ID, 'mood', true); ?>
    复制代码

    true的意思是“给我一个值”,这意味着即使有多个同名的自定义字段,你也只能得到一个。要获取具有相同名称的多个字段,请使用 false,例如。

    <?php $songs = get_post_meta($post->ID, 'songs', false); ?>
    <h3>This post inspired by:</h3>
    <ul>
      <?php foreach($songs as $song) {
        echo '<li>'.$song.'</li>';
      } ?>
    </ul>
    复制代码

    如果您想将它们全部转储(可能主要用于调试),您可以这样做。

    <?php the_meta(); ?>
    复制代码

    但是,请注意,这将跳过以下划线开头的自定义字段 (_),因此您可能需要考虑使用此方法。

    在 WordPress 中查询自定义字段

    假设您要搜索具有某些特定自定义字段的所有帖子。有可能的。

    <?php
    $the_query = new WP_Query(array(
      'meta_key' => 'example_field_name'
      'meta_value' => 'example_field_value' // as a string! 
    ));
    
    if ($the_query->have_posts()) {
      while ($the_query->have_posts()) {
        $the_query->the_post();
        echo '<div>' . get_the_title() . '</div>';
      }
    }
    
    wp_reset_postdata();
    复制代码

    上面的示例将在 发布带有自定义字段 example_field_name 的同时运行对 的查询,并且该字段的值为 amp_u 。你可以两者都做。

    您可以在这里做更多事情。您可以使用比较方法,可以获得数值,甚至可以一次查询多个字段。我们在《基于自定义字段的循环/查询》中详细介绍了所有这些内容。

    限制标题下拉列表中的自定义字段

    在 WordPress 中,自定义字段的现有 UI 下拉列表仅限于 30 个字段。因此,如果您有超过 100 个不同的按键,则下拉菜单将看起来被任意切断。您可以使用functions.php处的过滤器或插件来增加此金额。

    function customfield_limit_increase( $limit ) {
      $limit = 150;
      return $limit;
    }
    add_filter( 'postmeta_form_limit', 'customfield_limit_increase' );
    复制代码

    您对块编辑器还有其他疑问吗?

    主要问题是您根本看不到自定义字段的用户界面。我们已经介绍了如何重新打开它(因为默认情况下它可能处于关闭状态),因此请经常回来查看。高级自定义字段插件也会将其关闭,因此如果您正在使用该插件,请注意下面有一行可以帮助重新打开它(如果您像我们一样并使用这两个插件)。

    我不确定是否有标准方法可以在块编辑器中显示自定义字段的值。如果您知道明确的方法,请发表评论!

    与高级自定义字段的关系

    在 WordPress 中,本机自定义字段的 UI 相当......不足。它并不花哨,它有粗糙的边缘(例如,我们发现自定义字段在保存多个帖子时以奇怪的方式重复)。自定义字段虽然是原生的,但似乎并不是一个特别高级的 WordPress 功能。

    增强自定义字段 (ACF) 在很大程度上改变了这一点。其精神始终如一:将数据与内容连接起来。但是,您基本上是在以不同类型对数据进行建模,而不是我们详细介绍的简单的基于字符串的键值接口,并且它创建了非常好的用户界面,您可以将数据放入其中,甚至可以直接使用块编辑器。一体化。

    想象一个播客网站,其中每个帖子都是一个独立的剧集。块编辑器可能适用于有关剧集的书面内容,但可能不适用于与其关联的所有元数据。嘉宾名单、时长、MP3地点、赞助商、时间跳转链接等自定义字段是一个不错的选择,但由于字段太多,您可以在此处使用高级自定义字段,而不是使用原始 WordPress 自定义字段。这是我们在 ShopTalk Show 播客上所做的设置示例以及您将得到的内容。

    WordPress使用本地自定义字段(5个有用例子)

    ACF,大概是为了鼓励直接使用而不是让人们与原生自定义字段接口混淆,删除了原生自定义字段接口。如果您像我们一样使用这两种字段类型,则需要使用 ACF 提供的过滤器将本地自定义字段 UI 返回到帖子编辑器。

    add_filter('acf/settings/remove_wp_meta_box', '__return_false');
    复制代码

    如果您在 WordPress 中使用本机自定义字段,则需要在 functions.php 文件或函数插件中使用它们。

    插件开发者注意事项

    使用下划线技术。

    一些插件使用自定义字段 API 作为存储特定数据的位置。我认为这很好,但我想要求插件开发人员在执行此操作时始终使用下划线和插件前缀作为自定义字段名称。

    当自定义字段以下划线开头时,它们不会显示在 UI 中。这意味着对于我们这些直接使用自定义字段 UI 的人来说,它不会与其他插件创建的字段混淆。当然,例外是如果您希望用户能够控制插件处理自定义字段值的方式。在这种情况下,好的,保留前缀不带下划线的几个字段。

    _bobs_plugin_internal_value_1 // Hidden in UI
    _bobs_plugin_internal_value_2 // Hidden in UI
    bobs_plugin_config  // Shows in UI
    
    _adrians_plugin_internal_value_1  // Hidden in UI
    _adrians_plugin_internal_value_2 // Hidden in UI
    作者:前端工人
    来源:稀土掘金

    版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    热门