【问题标题】:Using "Advanced Custom Fields" checkbox fields in custom queries在自定义查询中使用“高级自定义字段”复选框字段
【发布时间】:2015-02-11 18:45:44
【问题描述】:

我正在尝试编写一个 WP_Query,它使用来自两个 ACF 复选框的一些数据作为参数的一部分。

我找到了显示如何在自定义查询中使用字段的文档,但是我无法弄清楚我的复选框的正确语法是什么。

我的 ACF:

  • 标签:提升到首页?
  • 名称:promote_to_homepage
  • 选择:提升到主页:提升到主页
  • 标签:制作功能?
  • 名称:make_feature
  • 选择:显示为功能:显示为功能(首页顶部)

这是我的查询:

$the_query = new WP_Query(
   array
      (
         'posts_per_page' => 1,
         'meta_key' => 'promote_to_homepage',
         'meta_value' => 'Promote to homepage',
         'meta_key' => 'make_feature',
         'meta_value' => 'Make feature'
      )
);

我想我不明白为什么meta_keymeta_value 实际需要数据。钥匙是标签吗?价值是选择之一吗?或者我需要使用meta_value => true 什么的吗?我尝试了很多变体,但无法让它发挥作用。

基本上我想要做的是输出最近检查过“提升到主页”和“制作功能”的帖子。

我也试过了:

array
   (
      'posts_per_page' => 1,
      'meta_key' => 'promote_to_homepage',
      'meta_value' => true,
      'meta_key' => 'make_feature',
      'meta_value' => true
)

编辑

这是我尝试过的新代码:

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 1,
        'meta_query' => array(
        'relation' => 'AND',
            array(
                'key' => 'promote_to_homepage',
                'value' => true,
            ),
            array(
                'key' => 'make_feature',
                'value' => true,
            ),
        )
     );

    $the_query = new WP_Query($args);

   if ( $the_query->have_posts() ) {
      while ( $the_query->have_posts() ) {
            $the_query->the_post();
            echo '<h2>' . get_the_title() . '</h2>';
            echo '<p>' . get_the_excerpt() . '</p>';
            echo '<p><a href="#" class="read-more">Read more</a></p>';
        }
    }
    wp_reset_postdata();

【问题讨论】:

    标签: checkbox advanced-custom-fields wordpress


    【解决方案1】:

    Another option is to get a lot of posts like this:
    
     $args = array(
           'post_type' => 'posts',
           );
    
    $posts = get_posts($args);
    
    foreach($posts as $item) :
      $make_feature = get_post_meta($item->ID, 'make_feature', true );
      var_dump($make_feature); //test
      $promote_to_homepage = get_post_meta($item->ID, 'promote_to_homepage', true );
      var_dimp($promote_to_homepage); //test
    
      if(isset($make_feature) && isset($promote_to_homepage)):
    
        print_r($item);
    
      endif;
    
    endforeach;

    在限制帖子之前先检查这是否有效。如果您没有从 var_dump 变量中得到任何结果,则说明 ACF 有问题。

    【讨论】:

    • 不起作用。我不相信这回答了这个问题。 ACF 复选框的 meta_valuemeta_key 是什么?是名字和简单的true?是标签吗?是选择之一吗?使用 ACF 字段时,元键中应该包含什么内容?
    • 元键是字段名,元值是输入。您是否查看了我关于解决方案一的更新帖子?
    • 是的,我已经尝试了您的两个示例,但都没有工作。当您说元值是“输入”时,这是否意味着 true ?复选框的输入是什么?
    • 是的。如果为真,它将评估为 1,因此该值为“1”,您将检查它是否等于该值。 advancedcustomfields.com/resources/true-false
    【解决方案2】:

    $args = array(
    	'post_type' => 'post',   //replace 'post' with cpt if you need to.
            'posts_per_page' => 1,
    	'meta_query' => array(
               'relation' => 'AND',
    		array(
    			'key' => 'promote_to_homepage',
    			'value' => '1',
    		    'compare' => '=='
    		),
                    array(
    			'key' => 'make_feature',
    			'value' => '1',
    		    'compare' => '=='
    		),
    	)
     );
    $the_query = new WP_Query($args); // This will return posts and other data
    $the_query = get_posts( $args );  // This will return the posts

    你觉得怎么样?选择 WP_Query OR get_posts:get_posts 无论如何都会从 wp_query 返回帖子数据,所以您不妨使用它。

    我不完全确定你所说的“真/是”是什么意思,但你可以玩弄这些值。如果自定义字段中的键值字面上是“true/yes”,那么您最好将其作为 args 中的值 - 否则 yes 或 true 都可以。

    【讨论】:

    • 谢谢,但我无法正常工作。这只是一个标准帖子(不是 CPT)。上面显示的两个值都被勾选。 True/yes 是我的示例,而不是该字段的名称。似乎'value' = &gt; true 根本无法选择勾选的复选框。如果不能在查询中使用 ACF 复选框,我不知道还能做什么。
    • 我最终到达了那里,但这不正确。我必须使用的比较是“LIKE”,值是复选框设置的文本选择
    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2017-08-26
    • 2013-11-25
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多