如何使用scribus帖子2帖

时间:2017-12-12 09:30:32

标签: wordpress pagination custom-post-type

干杯!

我正在尝试在我的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');
}

通过这些操作可以调用示例页面:

  • domain.dev/references/service/web-development(working)
  • domain.dev/references/service/web-development/page/2(不工作)

“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() ) {
        ...
    }

}

分页本身正在发挥作用。它在所有引用后显示。但是当我点击第二页时,我仍然看到第一页的六个引用。这有点令人沮丧...

关键问题

  1. 是否可以使用分页显示p2p连接的帖子?
  2. 是否可以显示带分页的第二个wp_query的帖子?
  3. 如果您有任何疑问,或者您想了解更多信息或代码,请随时与我联系。

    感谢您阅读我的问题!

1 个答案:

答案 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, 
);