我一直在努力工作,但是看起来我找不到问题了。我正在使用Bootstrap创建一个新主题,随之而来的是,我有一小段代码用于自定义页面导航,它似乎可以与基本的WordPess帖子列表一起使用。
但是我添加了一个名为gallery的新自定义帖子类型,我无法找到如何列出图库自定义帖子类型中的所有帖子并使分页工作的解决方案。到目前为止,我已经创建了一个名为archive-galleries.php的新文件,它列出了所有具有图库自定义帖子类型的帖子,但它不会转到第二页。我收到错误404 not found
。
以下是archive-galleries.php页面的代码
<?php get_header(); ?>
<?php get_sidebar('top'); ?>
<div class="row">
<div class="span8">
<?php the_post(); ?>
<h3 class="text-error"><?php _e('Latest image galleries', 'vt-translate'); ?></h3>
<?php $count = 0;
$paged = intval(get_query_var('paged'));
$paged = ($paged) ? $paged : 1;
$query_arguments = array(
'post_type' => 'galleries',
'posts_per_page' => 4,
'paged' => $paged,
);
// Query posts
query_posts( $query_arguments );
while ( have_posts() ) : the_post();
$open = !($count%4) ? '<div class="row">' : '';
$close = !($count%4) && $count ? '</div>' : '';
echo $close.$open;
?>
<div class="span2">
<a href="<?php the_permalink() ?>">
<img class="thumb" data-src="holder.js/160x250" alt="<?php the_title(); ?>" src="<?php bloginfo('template_url'); ?>/inc/timthumb.php?src=<?php echo get_post_meta($post->ID, 'thumb', true); ?>&h=250&w=160&zc=1" />
</a>
<div class="clearfix"></div>
<h6>
<a href="<?php the_permalink() ?>"><?php trim_title(); ?></a>
</h6>
</div>
<?php
$count++;
endwhile;
echo $count ? '</div>' : '';
?>
</div>
<div class="span4">
<?php get_sidebar('pageright'); ?>
</div>
</div>
<div class="pagination pagination-centered">
<?php page_navi(); ?>
</div><!-- #nav-below -->
<?php get_sidebar('belownavigation'); ?>
<?php get_footer(); ?>
这是我用于分页的自定义代码,位于functions.php文件中:
//Wordpress page navigation with numbers
function page_navi($before = '', $after = '') {
global $wpdb, $wp_query;
$request = $wp_query->request;
$posts_per_page = intval(get_query_var('posts_per_page'));
$paged = intval(get_query_var('paged'));
$numposts = $wp_query->found_posts;
$max_page = $wp_query->max_num_pages;
if ( $numposts <= $posts_per_page ) { return; }
if(empty($paged) || $paged == 0) {
$paged = 1;
}
$pages_to_show = 7;
$pages_to_show_minus_1 = $pages_to_show-1;
$half_page_start = floor($pages_to_show_minus_1/2);
$half_page_end = ceil($pages_to_show_minus_1/2);
$start_page = $paged - $half_page_start;
if($start_page <= 0) {
$start_page = 1;
}
$end_page = $paged + $half_page_end;
if(($end_page - $start_page) != $pages_to_show_minus_1) {
$end_page = $start_page + $pages_to_show_minus_1;
}
if($end_page > $max_page) {
$start_page = $max_page - $pages_to_show_minus_1;
$end_page = $max_page;
}
if($start_page <= 0) {
$start_page = 1;
}
echo $before.'<ul>'."";
if ($paged > 1) {
echo '<li class="prev"><a href="'.get_pagenum_link().'" title="First">'.__('«','vt-translate').'</a></li>';
}
$prevposts = get_previous_posts_link('« Previous');
if($prevposts) { echo '<li>' . $prevposts . '</li>'; }
else { echo '<li class="active"><a href="#">« Previous</a></li>'; }
for($i = $start_page; $i <= $end_page; $i++) {
if($i == $paged) {
echo '<li class="active"><a href="#">'.$i.'</a></li>';
} else {
echo '<li><a href="'.get_pagenum_link($i).'">'.$i.'</a></li>';
}
}
echo '<li class="">';
next_posts_link('Next »');
echo '</li>';
if ($end_page < $max_page) {
echo '<li class="next"><a href="'.get_pagenum_link($max_page).'" title="Last">'.__('»','vt-translate').'</a></li>';
}
echo '</ul>'.$after."";
}
答案 0 :(得分:0)
我找到了解决方案,或者它有点解决方法,由于某些原因,自定义帖子类型存档与默认存档的工作方式不同。
因此,对于解决方法,主要问题是永久链接,因此我必须使用不同的自定义帖子类型名称和自定义页面模板。
在我的functions.php文件中,我有代码,我在其中注册名为gallery的自定义帖子类型。但是因为我想使用画廊列出所有帖子,我会像这样命名我的页面,我不得不将重写规则添加到我的自定义帖子类型,所以注册我的自定义帖子类型的功能现在看起来像这样。
function my_custom_post_product() {
$labels = array(
'menu_name' => 'Galleries',
'all_items' => __( 'All Posts' ),
);
$args = array(
'labels' => $labels,
'description' => 'Add image galleries custom posts',
'public' => true,
'exclude_from_search' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments', 'custom-fields' ),
'has_archive' => true,
'rewrite' => array('slug' => 'gallery'),
'_builtin' => false
);
register_post_type( 'galleries', $args );
}
add_action( 'init', 'my_custom_post_product' );
因此,我的自定义帖子不是画廊,而是使用gallery slug。
现在列出我的图库中的所有帖子我使用了archive-galleries.php页面中的代码,并创建了名为page-galleries.php的新页面模板,并添加了archive-galleries.php中的代码。
现在我刚刚创建了新页面,选择了我新创建的画廊模板和保存的页面。在菜单中添加了新页面,它确实有效。
关于互联网如何为自定义帖子类型进行分页工作存在很大争议,并且由于某种原因它不能像常规存档一样工作,即使它打算使用archive -post_post_type_slug.php本地工作,这只是我的工作解决方法由我自己和主要问题制作的是许多互联网被忽视的(就像我也做的)是你不能命名页面与post type slug相同,并且存档将无法使用固定链接默认设置。