干杯!
我正在尝试在我的Wordpress页面上建立一个“引用 - 服务”关系,我尝试创建自己的“类似存档”页面。在这些页面上,我有一个用分页显示帖子的问题。
我有两个自定义帖子类型“引用”和“服务”。两者都与 scribus Wordpress Plugin“Posts2Posts”相关联,我的网站应包含以下内容:
archive-reference.php:列出至少有一个引用的所有服务。但那不是问题。不是存档页面的正常目标......
reference-service-page-template.php:自定义页面模板,显示服务的所有引用。因此,以这种方式,它的新“参考档案”按服务过滤。
如果相关,那就是 p2p连接(其工作):
p2p_register_connection_type( array(
'name' => 'service_to_reference',
'from' => 'service',
'to' => 'reference',
'title' => array(
'from' => __( 'Joint references', 'translation-domain' ),
'to' => __( 'Joint Services', 'translation-domain' )
),
'from_labels' => array(
'singular_name' => __( 'Service', 'translation-domain' ),
'search_items' => __( 'Search service', 'translation-domain' ),
'not_found' => __( 'No services found', 'translation-domain' ),
'create' => __( 'Join', 'translation-domain' ),
),
'to_labels' => array(
'singular_name' => __( 'Reference', 'translation-domain' ),
'search_items' => __( 'Search reference', 'translation-domain' ),
'not_found' => __( 'No references found', 'translation-domain' ),
'create' => __( 'Join', 'translation-domain' ),
)
) );
新存档“reference-service-page-template.php”的 wp_rewrite操作:
add_action('init', 'theme_name_reference_p2p_service_url');
function theme_name_reference_p2p_service_url() {
$url = get_theme_option('reference-service-url');
$page_slug = get_theme_option('reference-service-page-slug');
global $wp, $wp_rewrite;
$wp->add_query_var('service_single');
$wp_rewrite->add_rule(sprintf('%s([^/]+)', $url), sprintf('index.php?pagename=%s&service_single=$matches[1]', $page_slug),'top');
}
通过这些操作可以调用示例页面:
“references”是真正的档案。 “服务”是带有页面模板的虚假档案。最后一部分是服务帖类型页面slug。 此页面可访问并显示引用。但对我来说,目前无法在多个页面上显示引用。这是页面模板的第一个代码部分:
get_header();
global $wp_query;
if (isset($wp_query->query['service_single'])) {
$service_title = $wp_query->query['service_single'];
$post = get_page_by_path($service_title, OBJECT, 'service');
// var_dump(get_query_var('page'));
$service_reference_query = new WP_Query( array(
'connected_type' => 'service_to_reference',
'connected_items' => $post,
'nopaging' => false,
'posts_per_page' => 6,
'paged' => (get_query_var('page')) ? get_query_var('page') : 1,
));
if ( $service_reference_query->have_posts() ) {
...
}
}
分页本身正在发挥作用。它在所有引用后显示。但是当我点击第二页时,我仍然看到第一页的六个引用。这有点令人沮丧...
如果您有任何疑问,或者您想了解更多信息或代码,请随时与我联系。
感谢您阅读我的问题!
答案 0 :(得分:0)
我在自定义重写规则中发现了该错误。 我忘了为页面添加第二个重写规则。
这是我的新自定义重写操作:
add_action('init', 'theme_name_reference_p2p_service_url');
function theme_name_reference_p2p_service_url() {
$url = get_theme_option('reference-service-url');
$page_slug = get_theme_option('reference-service-page-slug');
global $wp, $wp_rewrite;
$wp->add_query_var('service_single');
$wp_rewrite->add_rule(sprintf('%s([^/]+)$', $url), sprintf('index.php?pagename=%s&service_single=$matches[1]', $page_slug),'top');
$wp_rewrite->add_rule(sprintf('%s([^/]+)/page/([0-9]{1,})/?$', $url), sprintf('index.php?pagename=%s&service_single=$matches[1]&paged=$matches[2]', $page_slug),'top');
}
重要的是重写规则末尾的$
字符。它表示URL停在那里。
将重写规则添加到函数后,重要的是重新安全永久链接结构。
第二个错误是自定义WP_Query args中的 query var'page'。这是正确的args数组:
$args = array(
'connected_type' => 'service_to_reference',
'connected_items' => $post,
'nopaging' => 0,
'posts_per_page' => 6,
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1,
);