如何删除所有WordPress帖子中的元值?

如何删除所有WordPress帖子中的元值?,wordpress,Wordpress,我在一个博客上工作,我想添加一个横幅,这是一篇特色文章 但我不知道如何才能使只有一篇文章被标记为“特色”,因此,如果另一篇文章被标记为“特色”,它将删除显示为特色的旧文章 我曾尝试使用ACF(高级自定义字段)复选框标记特色文章,但我的方法不正确 这是我的密码 <?php global $post; $myposts = get_posts( array( 'posts_per_page' => 1, 'order' => 'DESC'

我在一个博客上工作,我想添加一个横幅,这是一篇特色文章

但我不知道如何才能使只有一篇文章被标记为“特色”,因此,如果另一篇文章被标记为“特色”,它将删除显示为特色的旧文章

我曾尝试使用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复选框/True/False字段是一个很好的起点。从那以后的解决办法是

  • 钩住
    acf/save\u post
    操作
  • 检查当前保存的帖子是否启用了
    featured\u post
  • 如果启用,则取消设置先前特色文章上的“特色”标志
  • 如果启用,则将帖子ID存储为特色帖子的全局选项(“mysites\u featured\u post”)
  • 在呈现横幅时,从该选项获取特色文章的ID
  • 对于该选项,您可以做两件事:使用WP自己的
    update\u选项
    ,或者创建一个带有
    Post
    字段的ACF选项页面,该字段只包含一篇(特色)文章。ACF选项页面的优点是,您可以导航到选项页面,在wp admin中手动编辑特色文章

    但是,我将使用WP的
    update\u选项来演示它:

    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\u featured\u post”选项中

    要获取用于呈现横幅的特色帖子,您可以从以下选项中检索
    $post\u 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)
      // ...
    }
    

    此解决方案简单而高效,因为它不必迭代/查询所有帖子的元条目来查找当前特色帖子。

    使用ACF进行此操作的更好方法是依赖内置选项页面。为选项页面创建一个名为“特色文章”或其他内容的字段。您可以将其设置为下拉列表,以便只能选择一篇文章。