【问题标题】:Wordpress query_post array with Advanced Custom Fields (probably a simple solution)带有高级自定义字段的 Wordpress query_post 数组(可能是一个简单的解决方案)
【发布时间】:2012-12-05 14:07:40
【问题描述】:

在 Wordpress 网站上工作,想知道是否有人能指出我正确的方向。 我有以下 query_post 过滤我模板上的帖子并且效果很好。

query_posts( array( 'category_name' => 'galoretv', 'post_type' => 'post', 'paged'=>$paged, 'showposts'=>0, ) );

如何附加此内容以包括对高级自定义字段中特定值的检查? 此类别中的帖子有一个单选按钮,其中包含三个选项“主要”“次要”“标准” 我希望能够检查每个值,即如果您属于“galoretv”和“标准”,请执行此操作。

我使用上面的参数执行和排序页面,只是不确定如何添加 ACF 值。我能够使用粘性选项让它工作,但这会起作用,因为我需要有主要和次要的可选性。这是我用粘性的节目。

query_posts( array( 'category_name' => 'galoretv', 'post_type' => 'post', 'paged'=>$paged, 'showposts'=>0, 'post__in'=>get_option('sticky_posts')) );

单选按钮字段称为“landing-grid-placement”

有什么想法吗?查了文档,没搞清楚。 http://www.advancedcustomfields.com/docs/field-types/checkbox/

以为这样可以,但是没有

query_posts( array( 'category_name' => 'galoretv', 'post_type' => 'post', 'paged'=>$paged, 'showposts'=>0, 'landing-grid-placement' => 'primary') );

任何帮助将不胜感激。这可能是一个简单的语法问题,但它让我无法理解并给我带来了很多问题。一直在寻找答案,但还没有得到正确的答案。提前感谢阅读本文的人,并再次感谢任何提供解决方案的人。

以下每条注释的附加代码

 <?php

    $args = array(
        'post_type' => 'post',
        'category-slug' => 'models-galore',            
        'showposts'=>1, 
        'meta_query' => array(
            array(
                'key' => 'grid_location',
                'value' => 'primary',
                'compare' => '=', 
                'type' => 'CHAR' 
            )
        )
    );

    $query = new WP_Query($args);
    if($query->have_posts()) {
        while($query->have_posts()) {
            $query->the_post();
            ?>

            <li class="span8">
                <div class="thumbnail">
                    <a href="<?php echo get_permalink(); ?>"><?php echo get_the_post_thumbnail( get_the_ID(), 'media-large-thumb' ); ?></a>
                    <h3>
                        <a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a>
                    </h3>
                </div>
            </li>
            <?php
        }
    }

    ?>

【问题讨论】:

    标签: arrays wordpress custom-fields posts


    【解决方案1】:

    您可以使用 meta_query 来做到这一点

    Here's the doc

    这是一个例子:

    $args = array(
        //...
        'post_type' => 'post', 
        'paged'=>$paged, 
        //...
        'meta_query' => array(
            array(
                'key' => 'landing-grid-placement',
                'value' => 'primary',
                'compare' => '=', //default
                'type' => 'CHAR' //default
            )
        )
    );
    
    //This is the shoposts option (deprecated since 2.1, now use posts_per_page)
    $args['posts_per_page'] = -1; //-1 = infinite
    
    //to add taxonomy
    $args['tax_query'] = array(
        array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => 'galoretv'
        )
    );
    
    $query = new WP_Query($args);
    if($query->have_posts()) {
        while($query->have_posts()) {
            $query->the_post();
            ?>
            <li class="span8">
                <div class="thumbnail">
                    <a href="<?php echo get_permalink(); ?>"><?php echo get_the_post_thumbnail( get_the_ID(), 'media-large-thumb' ); ?></a>
                    <h2>
                        <a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a>
                    </h2>
                </div>
            </li>
            <?php
        }
    }
    

    也许有一个更简单的解决方案:

    $args = array(
        //...
        'post_type' => 'post', 
        'paged'=>$paged, 
        //...
        'meta_key' => 'landing-grid-placement', 
        'meta_value' => 'primary',
        'meta_compare' => '=' //default
        )
    );
    $query = new WP_Query($args);
    if($query->have_posts()) {
        while($query->have_posts()) {
            $query->the_post();
            //do what you would normally do in your loop
        }
    }
    

    【讨论】:

    • 感谢 Philippe 的及时回复。这是一个很好的解决方案,我所有的研究都指向一个数组。但是,如果参数为真,我执行的代码现在不起作用。我猜这只是另一个嵌套的 PHP 语法问题。
  • 函数 the_permalink 会回显整个 title 结构,使用 改为
  • 换掉了 the_permalink 以及其他调用仍然不起作用。如果所有这些,上面包含的功能都可以用 ....
  • 'post', 'paged'=>$paged, //... 'meta_key' => '登陆-grid-placement', 'meta_value' => 'primary', 'meta_compare' => '=' //default ) ); $query = new WP_Query($args); if($query->have_posts()) { while($query->have_posts()) { $query->the_post();
  • } ?>
  • 我假设我的基本问题是混合 PHP 和 HTML,但不幸的是我不知道语法。感谢您迄今为止的帮助 Philippe 和其他任何可能遇到此问题的人。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签