WordPress 自定义字段 101:提示、技巧和技巧

自定义字段是一种方便的 WordPress 功能,可让您向 WordPress 帖子和页面添加各种附加数据/信息.

许多流行的 WordPress 插件和主题都使用自定义字段来存储重要数据.您还可以使用自定义字段来存储您自己的数据,然后在您的网站上使用它.

在本文中,我们将通过一些提示、技巧和技巧向您展示如何使用 WordPress 自定义字段.

Using custom fields in WordPress with practical examples

由于这是一篇冗长的文章,我们添加了一个目录以便于导航.

  • 什么是 WordPress 自定义字段?
  • 在 WordPress 中添加自定义字段
  • 在 WordPress 主题中显示自定义字段
  • 在帖子编辑屏幕的下拉列表中找不到自定义字段
  • 为自定义字段创建用户界面
  • 使用高级自定义字段添加自定义字段
  • 使用条件语句隐藏空的自定义字段
  • 向自定义字段添加多个值
  • 在 WordPress 中按自定义字段搜索帖子
  • 使用特定的自定义键显示帖子
  • 使用自定义字段添加客座作者姓名
  • 使用自定义字段显示文章的贡献者
  • 在 WordPress 循环外显示自定义字段
  • 使用自定义字段显示自定义页眉、页脚和侧边栏
  • 使用自定义字段处理 RSS 提要内容
  • 使用自定义字段操作 RSS 提要标题
  • 使用自定义字段设置帖子的到期日期

什么是 WordPress 自定义字段?

WordPress 自定义字段是元数据,用于添加与您正在编辑的帖子或页面相关的附加信息.

默认情况下,当您撰写新帖子、页面或任何内容类型时,WordPress 会将其保存到两个不同的区域.

第一部分是您使用帖子编辑器添加的内容正文.

第二部分是有关该特定内容的信息.例如,标题、作者、日期、时间等.帖子的这个信息位称为元数据.

WordPress 会自动将所有必需的元数据添加到您创建的每个帖子或页面.

您还可以使用自定义字段创建和存储自己的元数据.

默认情况下,自定义字段选项在帖子编辑屏幕上是隐藏的.要查看它,您需要单击屏幕右上角的三点菜单,然后从菜单中选择"选项".

Post editor options

这将弹出一个弹出窗口,您需要在其中检查高级面板下的"自定义字段"选项.之后,单击"启用& "重新加载"按钮以重新加载帖子编辑器.

Enable and display custom fields panel

帖子编辑器将重新加载,您将能够在内容编辑器下方看到自定义字段面板.

Custom fields metabox below the post editor

自定义字段可用于添加与帖子、页面或任何内容类型相关的任何信息.此元信息可以显示在您的主题中.

但是,要做到这一点,您需要编辑 WordPress 主题文件.

这就是为什么向熟悉编辑主题文件的用户推荐本教程的原因.对于想要学习如何在自己的主题或插件中正确使用自定义字段的有抱负的 WordPress 开发人员也很有帮助.

说了这么多,我们来看看如何在WordPress中添加和使用自定义字段.

在 WordPress 中添加自定义字段

首先,您需要编辑要添加自定义字段的帖子或页面,然后转到自定义字段元框.

Adding custom field name and value

接下来,您需要为自定义字段提供名称,然后输入其值.单击添加自定义字段按钮以保存它.

该字段将存储并显示在自定义字段元框中,如下所示:

Saved custom field

您可以随时编辑此自定义字段,然后单击更新按钮保存更改.您也可以根据需要删除它.

现在您可以保存您的帖子以存储您的自定义字段设置.

在 WordPress 主题中显示自定义字段

要在您的网站上显示您的自定义字段,您需要编辑您的 WordPress 主题文件.如果您以前没有这样做过,请查看我们的指南,了解如何在 WordPress 中复制和粘贴代码.

首先,您需要找到需要编辑以显示自定义字段的主题文件.理想情况下,您希望将其显示在单个帖子页面上.您需要编辑 single.php 或 content-single.php 文件.

您需要在 WordPress 循环中输入您的自定义字段代码.查找如下所示的行:

<?php while ( have_posts() ) : the_post(); ?>

您要确保在以下行之前添加代码:

<?php endwhile;//end of the loop.?>

现在您需要将此代码添加到您的主题文件中:

<?php echo get_post_meta($post->ID, 'key', true); ?>

不要忘记将键替换为自定义字段的名称.例如,我们在演示主题中使用了以下代码:

<p>Today's Mood: <?php echo get_post_meta($post->ID, 'Mood', true); ?></p>

您现在可以保存更改并访问您添加自定义字段的帖子以查看其实际效果.

Custom field data displayed in a WordPress theme

现在您也可以在所有其他 WordPress 帖子中使用此自定义字段.

只需创建一个新帖子或编辑现有帖子.转到自定义字段元框并从下拉菜单中选择您的自定义字段并输入其值.

Reuse custom field

点击"添加自定义字段"按钮保存您的更改,然后发布或更新您的帖子.

无法在帖子编辑屏幕的下拉列表中找到自定义字段

默认情况下,WordPress 仅加载此表单中的 30 个自定义字段.

如果您使用的 WordPress 主题和插件已经使用了自定义字段,那么这些主题和插件可能会首先出现在下拉菜单中,而您将无法看到新创建的自定义字段.

要解决此问题,您需要将以下代码添加到主题的 functions.php 文件或特定于站点的插件中.


add_filter( 'postmeta_form_limit', 'meta_limit_increase' );
function meta_limit_increase( $limit ) {
    return 50;
}

以上代码会将限制更改为 50.如果您仍然看不到自定义字段,请尝试进一步增加该限制.

为自定义字段创建用户界面

如您所见,添加自定义字段后,每次撰写帖子时都必须选择该字段并输入其值.

如果您的网站上有许多 WordPress 自定义字段或多个用户,那么这不是理想的解决方案.

如果您可以创建一个用户界面,用户可以在其中填写表单以向您的自定义字段添加值,这不是很好吗?

许多流行的 WordPress 插件已经这样做了.例如,流行的 All in One SEO 插件中的 SEO 标题和元描述框是一个自定义元框:

All in One SEO Pack Meta Box

最简单的方法是使用高级自定义字段插件.

使用高级自定义字段添加自定义字段

您需要做的第一件事是安装并激活高级自定义字段插件.有关更多详细信息,请参阅有关如何安装 WordPress 插件的分步指南.

激活后,您需要访问自定义字段»字段组页面,然后单击添加新按钮.

Add new field group

字段组就像一组自定义字段的容器.这允许您添加多个自定义字段面板.

现在,您需要为字段组提供标题,然后单击"添加字段"按钮.

Add new field

您现在可以为自定义字段提供名称并选择字段类型.高级自定义字段允许您创建各种字段,包括文本、图片上传、数字、下拉列表、复选框等.

Adding a new fielld

向下滚动,您将看到该特定字段的其他选项.您可以根据自己的要求更改它们.

如果需要,您可以向字段组添加多个字段.完成后,单击发布按钮以保存更改.

您现在可以编辑帖子或创建新帖子,您将在内容编辑器下方看到一个新的 WordPress 自定义字段面板.

Custom field panel on the post edit screen

有关详细的分步说明,请参阅有关如何在 WordPress 帖子和帖子类型中添加自定义元框的指南.

使用条件语句隐藏空的自定义字段

到目前为止,我们已经介绍了如何创建自定义字段并将其显示在您的主题中.

现在让我们看看如何在显示之前检查自定义字段是否为空.为此,我们将修改我们的代码以首先检查该字段中是否有数据.

<?php 

$mood = get_post_meta($post->ID, 'Mood', true);

if ($mood) { ?>

<p>Today's Mood: <? echo $mood; ?></p>

<?php 

} else { 
//do nothing; 
}

?>

不要忘记将 Mood 替换为您自己的自定义字段名称.

向自定义字段添加多个值

自定义字段可以在同一帖子中再次重复使用以添加多个值.您只需要再次选择它并添加另一个值.

Adding multiple values to a custom field

但是,我们在上面的示例中使用的代码只能显示单个值.

要显示自定义字段的所有值,我们需要修改代码并使其返回数组中的数据.您需要在主题文件中添加以下代码:

<?php 
$mood = get_post_meta($post->ID, 'Mood', false);
if( count( $mood ) != 0 ) { ?>
<p>Today's Mood:</p>
<ul>
<?php foreach($mood as $mood) {
            echo '<li>'.$mood.'</li>';
            }
            ?>
</ul>
<?php 
} else { 
//do nothing; 
}
?>

不要忘记将 Mood 替换为您自己的自定义字段名称.

在本例中,您会注意到我们将 get_post_meta 函数的最后一个参数更改为 false.此参数定义函数是否应返回单个值.将其设置为 false 允许它以数组形式返回数据,然后我们将其显示在 foreach 循环中.

在 WordPress 中按自定义字段搜索帖子

WordPress 的默认搜索不适用于您网站上的任何自定义字段.它仅使用内容来查找您在网站上查找的帖子.

然而,SearchWP 改变了这一点并改进了您的 WordPress 搜索.它是最好的 WordPress 搜索插件,它不仅仅是使用帖子内容和索引所有内容,包括 WordPress 自定义字段、PDF 文档、自定义表格、文本、文件等.

您可以使用 SearchWP 在不编辑代码的情况下调整搜索算法.只需安装插件,然后转到设置» SearchWP 从您的 WordPress 管理区域.

之后,转到"引擎"选项卡,然后调整"属性相关性"滑块以设置搜索过程中每个属性的权重.

SearchWP engines example

例如,您将自定义字段滑块配置为最大值并相应地调整其他属性的滑块.这样,当在 WordPress 中搜索内容时,SearchWP 将优先考虑自定义字段中的数据.

使用 SearchWP 的另一个优势是可以与一些最流行的自定义字段插件配合使用,例如高级自定义字段 (ACF)、Meta Box 和 Pods.

有关更多详细信息,您可以阅读我们的指南,了解如何使用 SearchWP 改进 WordPress 搜索.

显示具有特定自定义键的帖子

WordPress 允许您显示带有自定义键及其值的帖子.例如,如果您尝试创建自定义存档页面以显示具有特定自定义键的所有帖子,那么您可以使用 WP_Query 类来查询与这些字段匹配的帖子.

您可以使用以下代码作为起点.

$args = array(
	'meta_key'   => 'Mood',
	'meta_value' => 'Happy'
);
$the_query = new WP_Query( $args );

<?php 
//the query
$the_query = new WP_Query( $args ); ?>

<?php if ( $the_query->have_posts() ) : ?>

	<!--the loop -->
	<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
		<h2><?php the_title(); ?></h2>
		<?php the_content(); ?>

	<?php endwhile; ?>
	<!--end of the loop -->

	<!--pagination here -->

	<?php wp_reset_postdata(); ?>

<?php else : ?>
	<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

不要忘记用您自己的值替换 meta_keymeta_value 参数.

使用自定义字段添加访客作者姓名

您想添加访客帖子但不想添加新的用户个人资料只是为了添加一个帖子吗?一种更简单的方法是添加客座作者姓名作为自定义字段.

首先,您需要在主题的functions.php 文件或特定于站点的插件中添加以下代码.

add_filter( 'the_author', 'guest_author_name' );
add_filter( 'get_the_author_display_name', 'guest_author_name' );
function guest_author_name( $name ) {
global $post;
$author = get_post_meta( $post->ID, 'guest-author', true );
if ( $author )
$name = $author;
return $name;
}

此代码将函数挂接到 WordPress 中的 the_authorget_the_author_display_name 过滤器.

该函数首先检查客座作者的姓名.如果存在,则将作者姓名替换为客座作者的姓名.

现在您需要编辑要显示客座作者姓名的帖子.转到自定义字段元框并添加您的访客作者姓名.

Adding guest author custom field

有关详细信息,请参阅我们关于如何在 WordPress 中使用自定义字段重写来宾作者姓名的文章.

使用自定义字段显示文章的贡献者

在许多流行的博客和新闻网站上,有多位作者共同撰写一篇文章.但是,WordPress 只允许单个作者与帖子相关联.

解决此问题的一种方法是使用 Co-Authors Plus 插件.要了解更多信息,请参阅有关如何在 WordPress 帖子中添加多个作者的指南.

另一种方法是将贡献者添加为自定义字段.

首先,您需要编辑要显示共同作者或贡献者的帖子.向下滚动到自定义字段元框并将作者姓名添加为共同作者自定义字段.

Adding co-author custom field

现在将此代码添加到您要显示共同作者的主题文件中.


<?php 

$coauthors = get_post_meta($post->ID, 'co-author', false);
if( count( $coauthors ) != 0 ) { ?>
<ul class="coauthors">
<li>Contributors</li>
<?php foreach($coauthors as $coauthors) { ?>
           <?php echo '<li>'.$coauthors.'</li>' ;
            }
            ?>
</ul>
<?php 
} else { 
//do nothing; 
}
?>

要显示以逗号分隔的作者姓名,您可以添加以下自定义 CSS.

.coauthors ul { 
display:inline;
}
.coauthors li { 
display:inline;
list-style:none;
}
.coauthors li:after { 
content:","
}
.coauthors li:last-child:after {
    content: "";
}
.coauthors li:first-child:after {
    content: ":";
}

这就是它在我们的演示网站上的样子.

Co-authors displayed using custom fields

在 WordPress 循环外显示自定义字段

到目前为止,我们已经向您展示了在 WordPress 循环中显示自定义字段的所有示例.如果您需要在循环之外显示它们怎么办?例如,在单个帖子的侧边栏中.

要在 WordPress 循环之外显示自定义字段,请添加以下代码:

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'key', true);
wp_reset_query();
?>

不要忘记用您的自定义字段名称替换键.

使用自定义字段显示自定义页眉、页脚、边栏

通常,大多数 WordPress 主题在所有页面上使用相同的页眉、页脚和侧边栏.有多种方法可以为您网站上的不同页面显示不同的侧边栏、页眉或页脚.请参阅我们的指南,了解如何为每个 WordPress 帖子或页面显示不同的侧边栏.

一种方法是使用自定义字段.编辑要显示不同侧边栏的帖子或页面,然后将侧边栏添加为自定义字段.

Adding custom sidebar to a post using custom field

现在你需要编辑你的 WordPress 主题文件,比如你想要显示自定义侧边栏的 single.php.您将寻找以下代码:

<?php get_sidebar(); ?>

将此行替换为以下代码:

<?php 
global $wp_query;
$postid = $wp_query->post->ID;
$sidebar = get_post_meta($postid, "sidebar", true);
get_sidebar($sidebar);
wp_reset_query();
?>

此代码只是查找侧边栏自定义字段,然后将其显示在您的主题中.例如,如果您添加 wpbpage 作为侧边栏自定义字段,则代码将查找要显示的 sidebar-wpbpage.php 文件.

您需要在主题文件夹中创建 sidebar-wpbpage.php 文件.您可以从主题的 sidebar.php 文件中复制代码作为起点.

使用自定义字段操作 RSS 提要内容

想要向您的 RSS 提要用户显示额外的元数据或内容吗?使用自定义字段,您可以操作 WordPress RSS 提要并将自定义内容添加到您的提要中.

首先,您需要在主题的functions.php 文件或特定于站点的插件中添加以下代码.

function wpbeginner_postrss($content) {
global $wp_query;
$postid = $wp_query->post->ID;
$coolcustom = get_post_meta($postid, 'coolcustom', true);
if(is_feed()) {
if($coolcustom !== '') {
$content = $content."<br/><br/><div>".$coolcustom."</div>
";
}
else {
$content = $content;
}
}
return $content;
}
add_filter('the_excerpt_rss', 'wpbeginner_postrss');
add_filter('the_content', 'wpbeginner_postrss');

现在只需创建一个名为"coolcustom"的自定义字段并添加您喜欢的任何值.您可以使用它来显示广告、图像、文本或任何您想要的内容.

使用自定义字段操作 RSS 提要标题

有时您可能希望为 RSS 提要用户在帖子标题中添加额外的文本.例如,如果您要发布赞助帖子或访客帖子.

首先,在主题的functions.php 文件或特定于站点的插件中添加以下代码.

function wpbeginner_titlerss($content) {
global $wp_query;
$postid = $wp_query->post->ID;
$gpost = get_post_meta($postid, 'guest_post', true);
$spost = get_post_meta($postid, 'sponsored_post', true);

if($gpost !== '') {
$content = 'Guest Post: '.$content;
}
elseif ($spost !== ''){
$content = 'Sponsored Post: '.$content;
}
else {
$content = $content;
}
return $content;
}
add_filter('the_title_rss', 'wpbeginner_titlerss');

接下来,您需要编辑要在标题字段中显示额外文本的帖子,并在自定义字段中添加 guest_post 和sponsed_post.

Sponsored and guest post custom fields

如果发现这两个自定义字段中的任何一个值为"true",则会在标题前添加适当的文本.可以通过多种方式利用这种技术来适应您喜欢的任何事物.

想了解更多很酷的 RSS 提要技巧吗?请参阅我们的指南,了解如何添加内容和操作 WordPress RSS 提要.

使用自定义字段在 WordPress 中设置帖子的到期日期

想要为您的 WordPress 网站上的某些帖子设置到期日期?当您只想在特定时期发布内容(例如运行调查或限时优惠)时,这会派上用场.

一种方法是手动删除帖子内容或使用像 Post Expirator 插件这样的插件.

另一种方法是使用自定义字段在特定时间后自动使帖子过期.

您需要像这样编辑主题文件并添加修改 WordPress 循环:

<?php
if (have_posts()) :
while (have_posts()) : the_post(); 
$expirationtime = get_post_meta($post->ID, "expiration", false);
if( count( $expirationtime ) != '' ) { 
if (is_array($expirationtime)) {
$expirestring = implode($expirationtime);
}

$secondsbetween = strtotime($expirestring)-time();
if ( $secondsbetween >= 0 ) {
echo 'This post will expire on '.$expirestring.'';
the_content();
} else { 
echo "Sorry this post expired!"
}
} else { 
the_content();
} 
endwhile;
endif;
?>

注意:您需要编辑此代码以匹配您的主题.

添加此代码后,您可以在要过期的帖子中添加过期自定义字段.确保以这种格式添加时间mm/dd/yyyy 00:00:00.

Adding an expiration date using custom field

使用自定义字段设置单个帖子的样式

想要使用 CSS 更改单个帖子的外观吗? WordPress 会自动为每个帖子分配自己的类,您可以使用它来添加自定义 CSS.

但是,使用自定义字段,您可以添加自己的自定义类,然后使用它们来设置不同的帖子样式.

首先,您需要编辑您想要以不同方式设置样式的帖子.转到自定义字段框和课后自定义字段.

Post class custom field

接下来,您需要编辑 WordPress 主题文件并在 WordPress 循环的开头添加此代码.

<?php $custom_values = get_post_meta($post->ID, 'post-class'); ?>

现在您需要找到包含 post_class() 函数的一行.这是它在我们的演示主题中的外观:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

更改此行以包含您的自定义字段值,如下所示:

<article id="post-<?php the_ID(); ?>" <?php post_class($custom_values); ?>>

现在,如果您使用 Inspect 工具检查帖子的源代码,那么您将看到您的自定义字段 CSS 类已添加到帖子类中.

Custom field post class

现在您可以使用这个 CSS 类来添加自定义 CSS 并为您的帖子设置不同的样式.

就是这样,我们希望本文能帮助您了解有关 WordPress 自定义字段的更多信息.您可能还想查看我们为初学者提高 WordPress 速度和性能的终极分步指南.

6

发表回复