Filter Custom Taxonomy Posts

时间:2019-04-04 作者:Joe Landry

我有一个自定义的分类页面,它也有一个向上的滑块。问题是滑块显示来自所有分类法而非当前分类法的随机帖子。是否有办法过滤滑块中的图像,使其仅使用当前分类法?

<?php
global $taxonomy_location_url, $taxonomy_profile_url;
$args = array(
\'post_type\' => $taxonomy_profile_url,
\'orderby\' => \'rand\',
\'meta_query\' => array( array(\'key\' => \'featured\', \'value\' => \'1\', \'compare\' => \'=\', \'type\' => \'NUMERIC\') ),
\'posts_per_page\' => get_option("slideritems")
);
$q = query_posts($args);

if ( have_posts()) : 

while ( have_posts() ) : the_post();
$category = wp_get_post_terms(get_the_ID(), $taxonomy_location_url);
$linktitle = get_the_title();
$imagealt = get_the_title();

?>

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

我想,您只发布了负责获取滑块的部分代码,所以很难知道您在哪里使用它。但我假设您正确地使用了模板层次结构,并且使用了类别归档。

如果是,那么您可以使用get_queried_object_id() 并在查询中使用它。

下面是解决问题的代码:

<?php
global $taxonomy_location_url, $taxonomy_profile_url;

$args = array(
    \'post_type\' => $taxonomy_profile_url,
    \'orderby\' => \'rand\',
    \'meta_query\' => array( array(\'key\' => \'featured\', \'value\' => \'1\', \'compare\' => \'=\', \'type\' => \'NUMERIC\') ),
    \'posts_per_page\' => get_option("slideritems"),
    \'tax_query\' => array( array( \'taxonomy\' => \'<YOUR TAXONOMY NAME>\', \'terms\' => get_queried_object_id() ) ),
);
$q = new WP_Query($args);

if ( $q->have_posts()) : 

while ( $q->have_posts() ) : $q->the_post();
    $category = wp_get_post_terms(get_the_ID(), $taxonomy_location_url);
    $linktitle = get_the_title();
    $imagealt = get_the_title();
    ...
endwhile;
wp_reset_postdata();
?>
你所要做的就是把你的分类名称放在那里。

另外请注意,我已经改变了query_postsnew WP_Query - 这是一种更好的执行自定义查询的方法,因为您不会覆盖全局查询。

SO网友:Pawan Kumar

使用此代码并修改texonomy名称。希望它能起作用。

<?php
    global $taxonomy_location_url, $taxonomy_profile_url;
    $terms = wp_get_post_terms( $post->ID, \'taxonomy name\'); // to get my taxonomy

    $args = array(
    \'post_type\' => $taxonomy_profile_url,
    \'orderby\' => \'ID\',
    \'meta_query\' => array( array(
        \'key\' => \'featured\', 
        \'value\' => \'1\', 
        \'compare\' => \'=\', 
        \'type\' => \'NUMERIC\'
    ) ),
    \'posts_per_page\' => get_option("slideritems"),
    \'tax_query\' => array(
            \'relation\' => \'AND\',
            array(
                \'taxonomy\' => \'texonomy_name\',
                \'field\'    => \'ID\',
                \'terms\'    => $terms
                 )
            ),     
    );
    $q = query_posts($args);

    if ( have_posts()) : 

    while ( have_posts() ) : the_post();
    $category = wp_get_post_terms(get_the_ID(), $taxonomy_location_url);
    $linktitle = get_the_title();
    $imagealt = get_the_title();

?>