自定义分类wp_Query问题。

时间:2014-10-10 作者:Justice Is Cheap

Here\'s a brief outline of the set-up:

“艺术”CPT是上传所有艺术和艺术描述的地方。在这个CPT中,你可以选择艺术的类别(自定义分类法)——绘画、珠宝、雕塑等。这允许我有一个页面,显示所有可通过同位素过滤的艺术。我还在两个CPT之间共享分类法。

“艺术家”CPT是所有艺术家bios的归宿(该网站最终将有大约50名艺术家——这就是为什么我创建了一个CPT来管理他们)。在这个CPT中,您可以选择艺术家名称的类别(自定义分类法)(它有一个父类别“the artists”),我也在共享艺术自定义分类法,尽管我还没有看到它的用处。

What I want:

当您单击艺术家页面时,该页面是艺术家的唯一页面。php——所有艺术家数据都显示在一个页面上——艺术家的姓名和个人简历从“艺术家”CPT中列出。在他们的bios下面,我试图按照艺术家名称自定义分类法,将分配给他们的所有艺术都归入“the art”CPT。

所以我有一个分类法,这是我想查询的:

艺术家们

-----个人艺人姓名

-----个人艺人姓名

-----个人艺人姓名

我知道我需要获取当前页面的分类法,但我正在研究如何做到这一点。我尝试了get\\u children\\u terms、get\\u terms、wp\\u get\\u object\\u terms,但似乎没有任何东西能帮我找到需要去的地方。

我当前使用的查询正在提取所有的艺术,但我希望当时页面上的特定艺术家的艺术。

Here\'s my query:

<?php

$term_slug = get_query_var( \'the-art\' );
$taxonomyName = get_query_var( \'art-category\' );

$args = array(
    \'post_type\' => \'the-art\',
    \'order\' => \'rand\',
    \'posts_per_page\' => -1,
    $taxonomyName => $term_slug
);

$art_work = new WP_Query(); 
$art_work->query($args); 
while ($art_work->have_posts()) : $art_work->the_post(); ?>

// do loop stuff here

<?php endwhile; wp_reset_postdata(); ?>
谢谢你能提供的任何帮助。

这是这个公益网站的最后一块,我想用它来完成。:)

2 个回复
SO网友:Pieter Goosen

在我开始之前,你不应该在名字中使用大写字母,也不要使用连字符,正确的方法是用下划线分隔单词

你想做的事行不通。执行var_dump() 在单个页面上获取可用的查询变量

?><pre><?php var_dump($wp_query->query_vars); ?></pre><?php
您将看到以下内容无效

$term_slug = get_query_var( \'the-art\' );
$taxonomyName = get_query_var( \'art-category\' );
我不知道有什么方法可以从术语名称中获得分类法,因此您需要硬编码,还需要进行检查,以查看post术语是否属于分类法。

要获取post术语,您可以使用以下选项之一

SO网友:Justice Is Cheap

最后我不得不使用Post 2 Post plugin 让这一切顺利进行。显然,WP目前还不能很好地创建关系,因此需要插件帮助。经过多次搜索,这是我遇到的解决方案,我与插件的创建者没有任何关联。。。很高兴它解决了我的问题。

WP插件页面中的描述:

此插件允许您在任何类型的帖子之间创建多对多关系:帖子、页面、自定义等。以下是一些示例用例:

手动整理相关帖子列表,发布与零售商等相关的产品。此外,您可以在帖子和用户之间创建多对多关系。因此,您还可以实现:

用户最喜爱的帖子每个帖子有多个作者等。文档可在此处找到:https://github.com/scribu/wp-posts-to-posts/wiki

只需在我的函数文件中添加几行,然后对关系执行WP\\u查询即可。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post