wordpress - 如何删除所有 WordPress 帖子中的元值?
问题描述
我正在写博客,我想添加一个作为特色帖子的横幅。
但是我不确定如何只将一个帖子标记为“精选”,所以如果另一个帖子被标记为“精选”,它会删除旧帖子显示为精选。
我尝试使用 ACF(高级自定义字段)复选框来标记特色帖子,但我的方法不正确。
这是我的代码。
<?php
global $post;
$myposts = get_posts( array(
'posts_per_page' => 1,
'order' => 'DESC',
'numberposts' => 1,
) );
if ( $myposts ) {
foreach ( $myposts as $post ) :
setup_postdata( $post );
if(get_field('featured_post')):
?>
一旦我标记了其他帖子的特色,什么都没有出现。
计划采用这种方法,但我不知道如何删除旧的精选帖子。
解决方案
ACF 复选框/真/假字段是一个很好的起点。从那里开始的解决方案是......
- 抓住
acf/save_post
行动 - 检查当前保存的帖子是否已
featured_post
启用 - 如果启用,请取消设置以前精选帖子上的“精选”标志
- 如果启用,将帖子的 ID 存储为特色帖子的全局选项('mysites_featured_post')
- 渲染横幅后,从此选项获取特色帖子的 ID
对于该选项,您可以做两件事:使用 WP 自己的update_option
,或创建一个 ACF 选项页面,其中的Post
字段仅包含一个(精选)帖子。ACF 选项页面的优点是您可以通过导航到选项页面手动编辑 wp-admin 中的特色帖子。
但是,我将使用 WP 来演示它update_option
:
function hookACFSavePost($post_id) {
$marked_featured = get_field('featured_post', $post_id);
if ($marked_featured) {
// get previously featured post
$prev_featured_post = get_option('mysites_featured_post', false);
if (is_numeric($prev_featured_post)) {
// disable featured flag on the previously featured post, for consistency:
update_field('featured_post', false, $prev_featured_post);
}
// store this as the current featured post
update_option('mysites_featured_post', $post_id, true);
}
}
add_action('acf/save_post', 'hookACFSavePost', 20);
通过这种方式,我们实现了禁用先前选择的帖子(如果存在)上的“精选”复选框,并将新精选帖子的 ID 存储在“mysites_featured_post”选项中。
然后获取用于呈现横幅的特色帖子,您可以$post_id
从选项中检索:
$featured_post_id = get_option('mysites_featured_post', false);
if ($featured_post_id) {
$post = get_post( $featured_post_id );
// render the post('s ID)
// ...
}
这个解决方案简单而高效,因为它不必遍历/查询所有帖子的元条目来查找当前精选帖子。
推荐阅读
- jenkins - 我可以访问 Jenkins 管道中的当前阶段 id 吗?
- ruby-on-rails - Rails Active Storage 不显示 @user.banner_image
- angular - 我怎样才能使 devextreme dx-autocomplete 仅成为数字
- javascript - 引导模式不加载图像
- javascript - 是否有任何解决方法(或破解)可以在 Chrome、Firefox 和 Safari 上自动播放音频?
- python - 在读取和执行操作时写入 CSV 文件时未写入数据
- ruby - 使用机械化不工作(Ruby)更改表单选择字段
- python - 如何在python中编写谷歌表格
- c++ - Getline 代码无法正常工作或我的代码无法正确编译
- python - 使用python对嵌套JSON的键进行展平和映射