根据我的理解:
如果>用户未登录-显示所有“公共”(元)帖子。
否则,如果>用户登录-显示所有“公共”(元)帖子(来自所有用户)和当前登录用户的所有“私有”(元)帖子。
我已经在下面运行了两个查询并合并了这些帖子。例如,它并非没有缺陷:在第一页上,它显示了posts_per_page
参数我也无法手动覆盖默认值posts_per_page
不中断分页。
您可能需要保存永久链接才能使其正常工作-希望它可以!
<?php
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$mainQuery = new WP_Query(array(\'meta_query\' => array(array(\'key\' => \'key1\', \'value\' => \'public\'))));
$postCount = $mainQuery->post_count;
if(is_user_logged_in()){
$secondQuery = new WP_Query(array(\'post\', \'meta_query\' => array(array(\'key\' => \'key1\', \'value\' => \'private\')), \'author\' => get_current_user_id(), \'paged\' => $paged));
$postCount = ($postCount + $secondQuery->post_count);
$mainQuery->posts = array_merge($mainQuery->posts, $secondQuery->posts);
$mainQuery->post_count = $postCount;
$mainQuery->max_num_pages = ceil($postCount / $posts_per_page);
}
?>
<?php if($mainQuery->have_posts()) : ?>
<?php while($mainQuery->have_posts()) : $mainQuery->the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php endwhile; ?>
<?php endif; ?>
<?php if($mainQuery->max_num_pages > 1) : ?>
<?php
$big = 9999999999;
$args = array(
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
\'format\' => \'?paged=%#%\',
\'current\' => max( 1, $paged ),
\'total\' => $mainQuery->max_num_pages,
\'end_size\' => 0,
\'mid_size\' => 2,
\'prev_next\' => False
);
echo paginate_links($args);
?>
<?php endif; ?>