我的查询获取了错误的数据

时间:2013-07-08 作者:Alex Sims

我试图填充一个选择框,以获取在我的ACF帖子类型中创建的类别,单击这些将通过其类别筛选可用的作业。可以在此处看到帖子类型-Post Type

当前,我的查询将4个类别返回到选择框中,该框对应于稍后在我的代码中呈现的帖子,而不是呈现我的所有类别。

我的分类查询可以在这里看到-

    <?php 
    $the_args = array (
        \'post_type\' => \'jobs\',
        the_field(\'job_category\') 
    );

    $option_query = new WP_Query( $the_args );
?>

    <form action="">
        <select name="job_cats">
            <?php if (have_posts()) : while ( $option_query->have_posts()) : $option_query->the_post(); ?>
                <option value="<?php the_field(\'job_category\'); ?>"><?php the_field(\'job_category\'); ?></option>
            <?php endwhile; endif; ?>
        </select>
    </form>

    <?php wp_reset_query(); ?>
在运行下面的函数之前,我尝试添加reset\\u query函数,但相同的结果仍然会呈现到选择框中。

<?php 
    $cat_filter = \'\';
    $node_id = 0;
    $node_count = 0;

    $args = array(
        \'post_type\' => \'jobs\',
        \'meta_key\' => \'job_category\',
        \'meta_value\' => $cat_filter
    );

    $the_query = new WP_Query( $args );
?>
    <?php if (have_posts()) : while ( $the_query->have_posts()) : $the_query->the_post(); $node_id++ ?>
        <div class="search-node node<?php echo $node_id ?>"> 
             <?php get_template_part( \'post\' , \'jobs\') ?> 
        </div>
        <hr id="divider<?php echo $node_id ?>" class="search-divider">
    <?php endwhile; else: ?>
          <p class="none-found">Sorry, we currently have no jobs available, keep watching this space!</p>
    <?php endif; ?>
如果有任何建议,我都会很感激,因为我对wordpress还比较陌生,所以我确信我犯了一个小错误!

亚历克斯。

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

$the_args = array (
    \'post_type\' => \'jobs\',
    the_field(\'job_category\') 
);
问题是the_field( \'job_category\' ) 打印数据,因此使用它来构建阵列几乎毫无用处。你只剩下post_type = job.

然而,真正的问题是,您实际上需要获取类别选项,而不是附加到的帖子。这就是为什么当你运行循环时,你只会得到一个对应于每个帖子类别的选择。

对…的快速浏览the ACF documentation 显示。。。

$field = get_field_object(\'field_name\');
$value = get_field(\'field_name\');
$label = $field[\'choices\'][ $value ];
这让我们非常清楚地了解了如何与ACF存储的数据交互。$field[\'choices\'] 显示为选项(类别)的关联数组,键为“字段”&;值为“标签”。有了这些信息,让我们来尝试一下select:

<?php if ( $field = get_field_object( \'job_category\' ) ) : ?>
    <select name="job_cats">
        <?php foreach ( $field[\'choices\'] as $name => $label ) ?>
            <option value="<?php echo $name ?>"><?php echo esc_html( $label ) ?></option>
        <?php endforeach ?>
    </select>
<?php endif ?>
希望这能有所帮助,如果您对任何事情都不确定,或者它不起作用,请告诉我们!:)

结束

相关推荐

Get categories without post

我想得到没有帖子的类别。下面是使用post获取类别的sql。。SELECT terms.term_id,terms.name,COUNT(post.ID) FROM wp_posts as post JOIN wp_term_relationships as rel ON post.ID = rel.object_ID JOIN wp_term_taxonomy as ttax ON rel.term_taxonomy_id = ttax.term_taxonomy_id JOI

我的查询获取了错误的数据 - 小码农CODE - 行之有效找到问题解决它

我的查询获取了错误的数据

时间:2013-07-08 作者:Alex Sims

我试图填充一个选择框,以获取在我的ACF帖子类型中创建的类别,单击这些将通过其类别筛选可用的作业。可以在此处看到帖子类型-Post Type

当前,我的查询将4个类别返回到选择框中,该框对应于稍后在我的代码中呈现的帖子,而不是呈现我的所有类别。

我的分类查询可以在这里看到-

    <?php 
    $the_args = array (
        \'post_type\' => \'jobs\',
        the_field(\'job_category\') 
    );

    $option_query = new WP_Query( $the_args );
?>

    <form action="">
        <select name="job_cats">
            <?php if (have_posts()) : while ( $option_query->have_posts()) : $option_query->the_post(); ?>
                <option value="<?php the_field(\'job_category\'); ?>"><?php the_field(\'job_category\'); ?></option>
            <?php endwhile; endif; ?>
        </select>
    </form>

    <?php wp_reset_query(); ?>
在运行下面的函数之前,我尝试添加reset\\u query函数,但相同的结果仍然会呈现到选择框中。

<?php 
    $cat_filter = \'\';
    $node_id = 0;
    $node_count = 0;

    $args = array(
        \'post_type\' => \'jobs\',
        \'meta_key\' => \'job_category\',
        \'meta_value\' => $cat_filter
    );

    $the_query = new WP_Query( $args );
?>
    <?php if (have_posts()) : while ( $the_query->have_posts()) : $the_query->the_post(); $node_id++ ?>
        <div class="search-node node<?php echo $node_id ?>"> 
             <?php get_template_part( \'post\' , \'jobs\') ?> 
        </div>
        <hr id="divider<?php echo $node_id ?>" class="search-divider">
    <?php endwhile; else: ?>
          <p class="none-found">Sorry, we currently have no jobs available, keep watching this space!</p>
    <?php endif; ?>
如果有任何建议,我都会很感激,因为我对wordpress还比较陌生,所以我确信我犯了一个小错误!

亚历克斯。

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

$the_args = array (
    \'post_type\' => \'jobs\',
    the_field(\'job_category\') 
);
问题是the_field( \'job_category\' ) 打印数据,因此使用它来构建阵列几乎毫无用处。你只剩下post_type = job.

然而,真正的问题是,您实际上需要获取类别选项,而不是附加到的帖子。这就是为什么当你运行循环时,你只会得到一个对应于每个帖子类别的选择。

对…的快速浏览the ACF documentation 显示。。。

$field = get_field_object(\'field_name\');
$value = get_field(\'field_name\');
$label = $field[\'choices\'][ $value ];
这让我们非常清楚地了解了如何与ACF存储的数据交互。$field[\'choices\'] 显示为选项(类别)的关联数组,键为“字段”&;值为“标签”。有了这些信息,让我们来尝试一下select:

<?php if ( $field = get_field_object( \'job_category\' ) ) : ?>
    <select name="job_cats">
        <?php foreach ( $field[\'choices\'] as $name => $label ) ?>
            <option value="<?php echo $name ?>"><?php echo esc_html( $label ) ?></option>
        <?php endforeach ?>
    </select>
<?php endif ?>
希望这能有所帮助,如果您对任何事情都不确定,或者它不起作用,请告诉我们!:)

相关推荐

如何将自定义选项添加到wp_Dropdown_Categories?

我需要将自定义选项添加到wp_dropdown_categories. 现在,整个万维网世界还没有找到解决方案。。。因此,我在这里要求一个解决方案……因为我真的无法想象WordPress的开发人员没有考虑到这将永远不需要,对吗?