按字段名称过滤页面(高级自定义字段和Wordpress)

时间:2012-09-18 15:43:37

标签: php wordpress

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

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

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分: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>