【问题标题】:Filter a page by a field name (Advanced Custom Fields & Wordpress)按字段名称过滤页面(高级自定义字段和 Wordpress)
【发布时间】:2012-09-18 15:43:37
【问题描述】:

我正在使用 Wordpress 和高级自定义字段。

我希望能够创建显示不同页面摘录或过滤它们的页面。

示例:我有 10 个不同的页面,每个页面都是关于酒店的,它们在字段(高级自定义字段)中存储了有关酒店、酒店名称、位置、设施等的各种信息。

这 10 家酒店是一个主页的子页面,主页显示上面的所有酒店,但只显示酒店的某些详细信息,例如描述的摘录和图像。

我创建了另一个名为 Category 的高级自定义字段,以尝试测试我是否可以让它工作,我只为一些实际的酒店相关页面填写了“Hotel”字段。

我正在努力做的是编写一些代码,以便该页面仅显示“酒店”类别下的酒店,我正在将代码编写在模板文件中,因此列出所有酒店的主要酒店页面正在使用此模板。

所有都在使用页面而不是帖子,所有信息都通过高级自定义字段插件存储在字段中。

我认为代码应该使用 ifelse 函数来工作。

如果有人能帮我解决这个问题,将不胜感激。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    您似乎想查询将某个自定义字段设置为特定值的页面。为此,您可以在页面模板中使用元查询,如下所示:

    <?php
    $args = array(
        'post_type' => 'page',
        'meta_query' => array(
            array(
                'key' => 'Category',
                'value' => 'Hotel',
                'compare' => 'LIKE'
            )
        ),
            'posts_per_page' => get_option('posts_per_page')
     );
    $hotel_query = new WP_Query( $args );
    ?>
    

    有关自定义字段的更高级查询,请查看custom field parameters in WP_Query 上的文档。

    获取自定义查询后,您几乎可以像往常一样循环遍历结果:

    <ul>
    <?php if ( $hotel_query->have_posts() ) : while ( $hotel_query->have_posts() ) : $hotel_query->the_post(); ?>
        <li><?php the_title(); ?></li>
    
    <?php endwhile; endif; ?>
    </ul>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-02
      • 2016-12-18
      • 2016-06-30
      • 1970-01-01
      • 2013-11-25
      • 2012-08-10
      • 2015-01-21
      • 2017-05-01
      相关资源
      最近更新 更多