我刚刚开始填充我的CPT。我想把它和普通的帖子分开。但当我去查看常规帖子(在single.php
模板),上一个/下一个nav包括CPT职位。
有趣的是,CPT帖子不会出现在主页列表上。
更新:我正在使用get_previous_post_join
, get_previous_post_where
, get_previous_post_sort
筛选器及其下一个对应项。这些似乎影响了所有的导航。如何将它们约束为仅影响所需的页面?
更新2:因此,我在下面的回答中对代码进行了更改(将get\\u previous/next\\u post\\u*过滤器封装在一个函数中,我在循环之前从CPT单模板调用了该函数。这是插件中的代码:
function aaaConsultant_set_nav_filters() {
add_filter(\'get_previous_post_join\', \'aaaConsultant_get_previous_post_join_custom_sort\');
add_filter(\'get_previous_post_where\', \'aaaConsultant_get_previous_post_where_custom_sort\');
add_filter(\'get_previous_post_sort\', \'aaaConsultant_get_previous_post_sort_custom_sort\');
add_filter(\'get_next_post_join\', \'aaaConsultant_get_next_post_join_custom_sort\');
add_filter(\'get_next_post_where\', \'aaaConsultant_get_next_post_where_custom_sort\');
add_filter(\'get_next_post_sort\', \'aaaConsultant_get_next_post_sort_custom_sort\');
}
function aaaConsultant_get_previous_post_join_custom_sort($join) {
global $wpdb;
return "INNER JOIN {$wpdb->prefix}postmeta ON (p.ID = {$wpdb->prefix}postmeta.post_id)";
}
function aaaConsultant_get_previous_post_where_custom_sort($where) {
global $wpdb, $post;
$meta_value = get_post_meta($post->ID, \'aaaConsultant_dateofletter\', true);
return "WHERE 1=1 AND p.post_type = \'refletter\' AND p.post_status = \'publish\' AND {$wpdb->prefix}postmeta.meta_key = \'aaaConsultant_dateofletter\' AND {$wpdb->prefix}postmeta.meta_value < \'{$meta_value}\'";
}
function aaaConsultant_get_previous_post_sort_custom_sort($sort) {
global $wpdb;
return "ORDER BY {$wpdb->prefix}postmeta.meta_value DESC LIMIT 1";
}
function aaaConsultant_get_next_post_join_custom_sort($join) {
global $wpdb;
return "INNER JOIN {$wpdb->prefix}postmeta ON (p.ID = {$wpdb->prefix}postmeta.post_id)";
}
function aaaConsultant_get_next_post_where_custom_sort($where) {
global $wpdb, $post;
$meta_value = get_post_meta($post->ID, \'aaaConsultant_dateofletter\', true);
return "WHERE 1=1 AND p.post_type = \'refletter\' AND p.post_status = \'publish\' AND {$wpdb->prefix}postmeta.meta_key = \'aaaConsultant_dateofletter\' AND {$wpdb->prefix}postmeta.meta_value > \'{$meta_value}\'";
}
function aaaConsultant_get_next_post_sort_custom_sort($sort) {
global $wpdb;
return "ORDER BY {$wpdb->prefix}postmeta.meta_value ASC LIMIT 1";
}
这是模板中的代码:
<?php
aaaConsultant_set_nav_filters();
if (have_posts()) : while (have_posts()) : the_post(); ?>
问题是,经常发布的帖子以单条形式出现。php,但nav返回到帖子列表的开头,不会遍历整个列表。不确定这是由什么引起的。将尝试停用插件,看看有什么效果。
此外,对于这个问题是应该放在一个新问题中,还是应该添加到这个问题中,这也是一个困惑,因为这显然是nav变化的影响。(我想,“显然”还没有得到证实。)
更新3:所以,停用了插件,在常规帖子中仍然存在导航问题。这些是通过演示数据创建者生成的。但是,当我决定重命名CPT时,我对wp\\U POST和wp\\U POSTETA表进行了一些手动更改。因此,这些问题可能是这种混乱的结果。
我想我会去掉生成的帖子并重新生成。
更新4:是的,更新帖子似乎已经解决了这个问题。我们将把它归因于我自己笨拙的数据库操作。不确定是否要删除更新3和4(也可能要删除更新2)。我会把这个交给StackExchange的智者们。