高级自定义字段插件:如何使用复选框来允许帖子显示在所需的“区域”?

时间:2013-01-02 作者:Matt

我在获取以下代码时遇到问题。我创建了一个高级自定义字段(top\\u articles),其中有一个复选框,包含三个选项:top\\u articles\\u left、top\\u middle、top\\u articles\\u right。我会这样做,当你在一个帖子中时,你可以检查一下你想要该帖子的特色,然后它会出现在我指定的三个区域中。我怎样才能用ACF做到这一点,并让它在WordPress中找到正确的帖子?

    <section class="top-articles">
        <h2>Top Articles</h2>

        <?php $articles_query = new WP_Query(\'category_name=main&posts_per_page=1\');
        while ($articles_query->have_posts()) : $articles_query->the_post(); ?>
        <?php if (get_field(\'top_articles\') == \'top_articles_left\'): ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(\'large\'); ?>
            </a>
        </article>
        <?php endif; endwhile; ?>

        <?php $articles_query = new WP_Query(\'category_name=main&posts_per_page=1\');
        while ($articles_query->have_posts()) : $articles_query->the_post(); ?>
        <?php if (get_field(\'top_articles\') == \'top_articles_middle\'): ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(\'large\'); ?>
            </a>
        </article>
        <?php endif; endwhile; ?>

        <?php $articles_query = new WP_Query(\'category_name=main&posts_per_page=1\');
        while ($articles_query->have_posts()) : $articles_query->the_post(); ?>
        <?php if (get_field(\'top_articles\') == \'top_articles_right\'): ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(\'large\'); ?>
            </a>
        </article>
        <?php endif; endwhile; ?>

    </section>

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您必须在数据库中查看ACF如何存储复选框值。据我所知,它们并没有保存为单一键下的平面元值,这使得无法高效地查询该数据。

现在的查询不起作用,只需在每个查询中加载一篇文章,并检查字段是否有特定值。如果那篇文章没有价值,你什么也看不到。您希望能够查询具有值的帖子,而不是查询帖子然后测试值。

如果要通过自己的元框将数据保存为post元数据,可以执行简单的元查询来加载具有这些值的帖子,请参阅WP_Query 了解更多信息。

$args = array(
    \'category_name\' => \'main\',
    \'meta_key\' => \'top_articles\',
    \'meta_value\' => \'top_articles_left\',
    \'posts_per_page\' => -1
);
$query = new WP_Query( $args );

结束

相关推荐

高级自定义字段插件:如何使用复选框来允许帖子显示在所需的“区域”? - 小码农CODE - 行之有效找到问题解决它

高级自定义字段插件:如何使用复选框来允许帖子显示在所需的“区域”?

时间:2013-01-02 作者:Matt

我在获取以下代码时遇到问题。我创建了一个高级自定义字段(top\\u articles),其中有一个复选框,包含三个选项:top\\u articles\\u left、top\\u middle、top\\u articles\\u right。我会这样做,当你在一个帖子中时,你可以检查一下你想要该帖子的特色,然后它会出现在我指定的三个区域中。我怎样才能用ACF做到这一点,并让它在WordPress中找到正确的帖子?

    <section class="top-articles">
        <h2>Top Articles</h2>

        <?php $articles_query = new WP_Query(\'category_name=main&posts_per_page=1\');
        while ($articles_query->have_posts()) : $articles_query->the_post(); ?>
        <?php if (get_field(\'top_articles\') == \'top_articles_left\'): ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(\'large\'); ?>
            </a>
        </article>
        <?php endif; endwhile; ?>

        <?php $articles_query = new WP_Query(\'category_name=main&posts_per_page=1\');
        while ($articles_query->have_posts()) : $articles_query->the_post(); ?>
        <?php if (get_field(\'top_articles\') == \'top_articles_middle\'): ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(\'large\'); ?>
            </a>
        </article>
        <?php endif; endwhile; ?>

        <?php $articles_query = new WP_Query(\'category_name=main&posts_per_page=1\');
        while ($articles_query->have_posts()) : $articles_query->the_post(); ?>
        <?php if (get_field(\'top_articles\') == \'top_articles_right\'): ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(\'large\'); ?>
            </a>
        </article>
        <?php endif; endwhile; ?>

    </section>

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您必须在数据库中查看ACF如何存储复选框值。据我所知,它们并没有保存为单一键下的平面元值,这使得无法高效地查询该数据。

现在的查询不起作用,只需在每个查询中加载一篇文章,并检查字段是否有特定值。如果那篇文章没有价值,你什么也看不到。您希望能够查询具有值的帖子,而不是查询帖子然后测试值。

如果要通过自己的元框将数据保存为post元数据,可以执行简单的元查询来加载具有这些值的帖子,请参阅WP_Query 了解更多信息。

$args = array(
    \'category_name\' => \'main\',
    \'meta_key\' => \'top_articles\',
    \'meta_value\' => \'top_articles_left\',
    \'posts_per_page\' => -1
);
$query = new WP_Query( $args );

相关推荐