查询页面以使用灵活的内容布局

时间:2019-03-25 作者:heytricia

我有一个网站,最初使用一个转发器字段来选择布局选项。我现在使用灵活的内容字段。我需要能够查询使用“特色资源”作为行布局的页面的网站。

过去,我可以在自定义模板中使用以下内容查询repeater字段的子字段:

function query_subfields( $where ) {
    $where = str_replace("meta_key = \'mods_$", "meta_key LIKE \'mods_%", $where);
    return $where;
} 
add_filter(\'posts_where\', \'query_subfields\');

<?php
$args = array(
\'posts_per_page\'    => -1,
\'post_type\'     => \'page\',
\'meta_query\'    => array( array(
\'key\'       => \'mods_$_choose_module\',  // WHAT REPLACES choose_module ??
\'value\'     => \'Featured Resources\',
\'compare\'   => \'=\'
))
);

$the_query = new WP_Query( $args );
?>

<?php if( $the_query->have_posts() ): ?>
<ul>

<?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>

</ul>

<?php else : ?>

<p>No matches.</p>

<?php endif; ?>

<?php wp_reset_query(); ?>
现在我正在使用灵活的内容,我不知道如何定义键的第二部分。内容模板使用get\\u row\\u layout();将字段内容添加到页面,但这不是键。根据我所读的内容,我相信这些子字段的键是随机生成的。如何允许这样做,以便能够使用此行布局生成页面列表?

1 个回复
SO网友:heytricia

我也在ACF支持论坛上发布了这篇文章,得到了很好的反馈:https://support.advancedcustomfields.com/forums/topic/query-pages-for-use-of-a-flexible-content-layout/

稍加调整,它就成功了。以下是我的结论:

<?php
    $flex_content_name = \'flexible_content\';  // < update with applicable field name
    $layout_name = \'featured-resources\';  // < update with applicable subfield name
    $args = array(
        \'posts_per_page\'    => -1,
        \'post_type\'     => \'page\',
        \'meta_query\'    => array(
            array(
                \'key\'       => $flex_content_name,
                \'value\'     => \'"\'.$layout_name.\'"\',
                \'compare\'   => \'LIKE\'
            )
        )
    );

    $the_query = new WP_Query( $args );
?>

<?php if( $the_query->have_posts() ): ?>

    <ul>
    <?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <li>
            <a href="<?php the_permalink(); ?>">
                <?php the_title(); ?>
            </a>
        </li>
    <?php endwhile; ?>
    </ul>

<?php else : ?>
    <p>No matches.</p>
<?php endif; ?>

<?php wp_reset_query(); ?>

相关推荐