我整夜都在努力使这个工作,但似乎我找不到问题。我正在使用Bootstrap来制作一个新的主题,并且伴随着它,我有一小段用于自定义页面导航的代码,它似乎与基本的wordpress帖子列表一起工作得很好。
但是我已经添加了一个新的自定义帖子类型叫做画廊,我找不到一个解决方案,如何列出所有的帖子在画廊自定义帖子类型和使分页工作。到目前为止,我已经创建了一个名为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."";
}
我已经找到了解决方案,或者它是一种变通方法,由于某种原因自定义post类型存档不像默认存档那样工作。
所以解决的主要问题是与永久链接,所以我不得不使用不同的自定义帖子类型名称和自定义页面模板。
在我的functions.php文件我有代码,我注册自定义的帖子类型称为画廊。但是因为我想用画廊来列出所有的帖子,我将把我的页面命名为这样,我不得不为我的自定义帖子类型添加重写规则,所以注册我的自定义帖子类型的函数现在看起来像这样。
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' );
所以我的自定义贴子现在使用的不是画廊,而是画廊。
现在要列出我的图库中的所有帖子,我使用了archive-galleries.php页面中的代码,并创建了新的页面模板,名为page-galleries.php,并添加了archive-galleries.php中的代码。
现在我刚刚创建了一个新页面,选择了我新创建的画廊模板并保存了页面。添加新页面到菜单,它工作。
网上大讨论如何使自定义分页工作职位类型和由于某种原因不做定期归档工作,即使是为了工作与archive-custom_post_type_slug.php这只是本地工作区我精心设计了自我,主要问题是,许多网上被忽视(像我一样),你不能名称页面一样的帖子类型蛞蝓,和档案不会永久链接的默认设置。