相关术语-出现在当前术语帖子中的术语

时间:2012-01-11 作者:Carpy

我不知道这有多困难,但我会尽可能简单地解释。

我有一个自定义的post类型,名为“Movies”,其分类术语为“Actor”

例如,假设在分类页面“Tom Cruise”上,该页面将输出Tom所参与的大量帖子(电影)。

我试图解决的是如何让相关术语(Actors)循环运行,这样我就可以在Actor terms页面的侧栏中找到它。

例如,汤姆·克鲁斯(TomCruise)的分类法将出现在电影《热带惊雷》(Tropic Thunder)中,但《本·斯蒂勒》(BenStiller)和其他人的分类法也将出现在电影《热带惊雷》(post)中。因此,在汤姆·克鲁斯的相关演员下的学期页面上,我想显示“本·斯蒂勒”,并链接到他的学期页面(反之亦然)。

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

很快就完成了,这至少应该是一个开始。这里的基本概念是将所有帖子都标记为主要人物(在本例中,Tom Cruise,您必须自己设置该变量。一旦有了这些变量,就可以遍历它们,然后foreach 电影(高射炮、热带雷霆、不可能完成的任务等),获取其他actors 为了那部电影。从那里,您生成一个数组,其中包含参与者slug(尽管您可以在对象中使用id或其他任何东西,实际上,适合您的需要)作为键,关联性(仅爬行出一个级别)作为值。然后你做一个arsort 以获得最相关的顶部,这将允许您for( $i=0; $i<5; $i++) 然后做一些无聊的HTML之类的东西。

$wp_query = new WP_Query;
$args = array(
    // post basics
    \'post_type\'      => \'Movies\',  // check capitalization, make sure this matches your post type slug
    \'post_status\'    => \'publish\', // you may not need this line.
    \'posts_per_page\' => 10,        // set this yourself, 10 is a placeholder
    // taxonomy
    \'tax_query\'      => array(
        array(
            \'taxonomy\' => \'actors\', // slug for desired tag goes here
            \'field\'    => \'slug\',
            \'terms\'    => \'Tom Cruise\', // should work without a slug, try it both ways...and use a variable, don\'t hardcode
        )
    )
);

$results = $wp_query->query( $args );

$related = array();

if( count( $results ) > 0 ) {
    foreach( $results as $result ) {
        $new_related = get_the_terms( $result->ID, \'actors\' ); //get terms for this post
        if( is_array( $new_related ) ) {
            foreach( $new_related as $v ) {
                $name = $v->name;
                if( array_key_exists( $name, $related ) )
                    $related[$name]++; // add to total if it\'s already there
                else
                    $related[$name] = 1; // initialize if it does not
            }
        }
    }
    arsort( $related, SORT_NUMERIC );
}

SO网友:Brian Fegter

你需要创建一个基于税收的循环。

$args = array(
    \'actor\' => get_query_var(\'actor\')
    \'post_type\' => \'movies\',
    \'posts_per_page\' => 5
)
$loop = new WP_Query($args);

if($loop->have_posts()):
    while($loop->have_posts()):
       $loop->the_post();
       //Do something
    endwhile;
endif;
这确实是一个概念证明。你必须根据自己的需要调整它。我建议您在$wp\\u query上打印recursive,以查找为您的自定义帖子类型和税收设置的查询变量。

global $wp_query;
print_r($wp_query);
这将帮助您调整自定义循环以满足您的需要。

结束

相关推荐

Custom loop attached to link

我有一个名为公司的自定义帖子类型。当你添加一家新公司时,你需要检查它是否是领导者,所以我创建了带有两个收音机的自定义元数据库,一个表示“是”,另一个表示“否”。在头版中,我通过自定义查询筛选出了领导者我也想在公司档案中进行筛选。我想添加两个链接,“Leaders”和“New”,所以当你按“New”时,你基本上按日期过滤,当你单击“Leaders”时,它按“yes”过滤。我知道我可以用分类法、标签、类别等来做到这一点。。。但对于客户来说,只说“是”或“否”会更简单。因此,我的问题是,当您单击链接时,如何实现