我创建了一些自定义帖子类型,比如:
这些帖子类型相互关联,每
post_type_1
有许多孩子的父母
post_type_2
.然后,我为
post_type_2
, 我们叫它吧
tax_1
.代码如下:
function registerPostType1() {
$supports = array(
\'title\', \'editor\', \'thumbnail\', \'excerpt\',
\'comments\', \'post-formats\'
);
$args = array(
\'public\' => true,
\'hierarchical\' => false,
\'query_var\' => false,
\'has_archive\' => true,
\'rewrite\' => array(\'slug\' => \'posttype1\'),
\'supports\' => $supports
);
register_post_type(\'post_type_1\', $args);
}
function registerPostType2() {
$supports = array(
\'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\',
\'comments\', \'post-formats\'
);
$args = array(
\'public\' => true,
\'hierarchical\' => false,
\'query_var\' => false,
\'has_archive\' => true,
\'rewrite\' => array(\'slug\' => \'post-type-2\'),
\'taxonomies\' => array(\'post_tag\'),
\'supports\' => $supports
);
register_post_type(\'post_type_2\', $args);
}
function registerTax1() {
$args = array(
\'hierarchical\' => false,
\'query_var\' => \'tax-1\'
);
register_taxonomy(\'tax-1\', \'post_type_2\', $args);
}
add_action(\'init\', \'registerPostType2\');
add_action(\'init\', \'registerTax1\', 0);
function registerPostType1Query() {
add_rewrite_tag(\'%posttype1%\',\'([^&]+)\');
}
function addPostType1QueryVar($query_vars) {
$query_vars[] = \'posttype1\';
return $query_vars;
}
function modifyPostType2Query($query) {
if ($query->is_main_query() &&
haveTaxonomyQuery($query, \'tax-1\')) {
$query->set(\'orderby\', \'rand\'); // Randomly order the posts
$query->set(\'posts_per_page\', 1); // Show only one post
$query->set(\'meta_key\', \'posttype1\');
$query->set(\'meta_value\', $query->query_vars[\'posttype1\']);
}
}
function haveTaxonomyQuery($query, $taxToFind) {
if (!property_exists($query, \'tax_query\') ||
empty($query->tax_query) ||
!property_exists($query->tax_query, \'queries\')) {
return FALSE;
}
foreach ($query->tax_query->queries as $index => $taxQuery) {
if ($taxQuery[\'taxonomy\'] === $taxToFind)
return TRUE;
}
return FALSE;
}
add_action(\'init\', \'registerPostType1Query\');
add_filter(\'query_vars\', \'addPostType1QueryVar\');
add_action(\'pre_get_posts\', \'modifyPostType2Query\');
现在我正在尝试为
post_type_1
其中对于每个
post_type_1
第页他们有一个指向存档的链接第页,共页
tax-1
(比如说
term-1
&;
term-2
) 该页面将用于过滤下面的1篇随机帖子
tax-1
(取决于单击了哪个术语)并与之前的
post_type_1
邮递
简言之,这就像city
(post_type_1
), people
(post_type_2
) 和gender
(tax-1
) 然后使用male
(term-1
) 和female
(term-2
).
因此,我有:
single-post_type_1.php
single-post_type_2.php
taxonomy-tax-1.php
以下是生成指向的链接的代码taxonomy-tax-1.php
page,在里面single-post_type_1.php
文件:<a href="<?php echo get_term_link(\'term-1\', \'tax-1\') ?>?posttype1=<?php the_ID(); ?>">
<img src="<?php bloginfo(\'template_url\'); ?>/images/term-1.jpg" />
</a>
起初,链接显示了404页,然后我从设置中刷新了永久链接,效果很好。然而,第二天,当我再次访问该页面时,它显示了索引页面,直到我再次刷新永久链接。我还尝试安装一个重写分析器插件,如Monkeyman Rewrite Analyzer 并尝试比较每一次重写(正常重写和显示主页的错误重写)。不同的是,其中一个显示的错误类似于(在tax-1
重写规则的替换):
此查询变量不是公共变量,不会保存
有人知道我做错了什么吗?每次都要刷新永久链接,这真的很烦人。任何帮助都将不胜感激。
提前谢谢。