Php Wordpress自定义帖子类型索引分页
我已经为我的主题创建了一个名为“项目”的自定义帖子类型。在我的项目页面上,我当前正在使用以下代码在一个页面上显示所有项目Php Wordpress自定义帖子类型索引分页,php,wordpress,html,pagination,content-management-system,Php,Wordpress,Html,Pagination,Content Management System,我已经为我的主题创建了一个名为“项目”的自定义帖子类型。在我的项目页面上,我当前正在使用以下代码在一个页面上显示所有项目 <?php $args = array( 'post_type' => 'bw_projects', 'posts_per_page' => 18 ); $loop = new WP_Query( $args ); while ( $loop->have_posts() )
<?php
$args = array( 'post_type' => 'bw_projects', 'posts_per_page' => 18 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
echo '<div class="project p-project" data-filter="">';
echo '<a href="'.get_permalink( $post->ID).'">';
the_post_thumbnail();
echo '</a>';
echo '</div>';
endwhile;
?>
我使用的是archive-projects.php,它使用的分页与posts非常相似。代码如下
<?php
if ( have_posts() ) :
/* Start the Loop */
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/post/contentp', get_post_format() );
endwhile;
else :
get_template_part( 'template-parts/post/contentp', 'none' );
endif;
?>
<nav>
<ul class="pager">
<li><?php next_posts_link( 'Previous' ); ?></li>
<li><?php previous_posts_link( 'Next' ); ?></li>
</ul>
</nav>
如何创建分页项目主页,而不是仅显示所有可用项目。我是要添加到现有的数组中(示例1),还是应该使用特定的模板(例如home projects.php)?您好,请检查下面的代码以进行分页
<?php
global $wp_query;
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array('post_type' => 'bw_projects', 'posts_per_page' => 5, 'paged' => $paged);
$wp_query = new WP_Query($args); ?>
<?php if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
<div class="pagination">
<?php previous_posts_link( 'New projects;' ); ?>
<?php next_posts_link('Old projects;') ?>
</div>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'No results' ); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
请检查下面的代码以进行分页
<?php
global $wp_query;
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array('post_type' => 'bw_projects', 'posts_per_page' => 5, 'paged' => $paged);
$wp_query = new WP_Query($args); ?>
<?php if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
<div class="pagination">
<?php previous_posts_link( 'New projects;' ); ?>
<?php next_posts_link('Old projects;') ?>
</div>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'No results' ); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
请按照以下步骤进行尝试:
将“paged”参数添加到查询中
如果WP\u Query正在更改主循环,并且未设置“paged”参数,则需要使用get\u Query\u var()
添加它。这就是WordPress确切知道它在哪一页的原因
例如,如果您的查询如下所示(不带“paged”参数):
您可以这样添加参数:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$the_query = new WP_Query( 'posts_per_page=3&paged=' . $paged );
?>
下一个示例与上面的示例完全相同,但具有数组中的参数:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'posts_per_page' => 3,
'paged' => $paged
);
$the_query = new WP_Query( $args );
?>
因此,在您的具体情况下,它将类似于:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array( 'post_type' => 'bw_projects', 'posts_per_page' => 18, 'paged' => $paged );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
echo '<div class="project p-project" data-filter="">';
echo '<a href="'.get_permalink( $post->ID).'">';
the_post_thumbnail();
echo '</a>';
echo '</div>';
endwhile;
?>
在添加分页之后,重置循环也可能是一个好主意,以便将WP返回到物理页面(而不是归档列表)。您可以通过以下方式执行此操作:
<?php wp_reset_postdata(); ?>
请按照以下步骤进行尝试:
将“paged”参数添加到查询中
如果WP\u Query正在更改主循环,并且未设置“paged”参数,则需要使用get\u Query\u var()
添加它。这就是WordPress确切知道它在哪一页的原因
例如,如果您的查询如下所示(不带“paged”参数):
您可以这样添加参数:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$the_query = new WP_Query( 'posts_per_page=3&paged=' . $paged );
?>
下一个示例与上面的示例完全相同,但具有数组中的参数:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'posts_per_page' => 3,
'paged' => $paged
);
$the_query = new WP_Query( $args );
?>
因此,在您的具体情况下,它将类似于:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array( 'post_type' => 'bw_projects', 'posts_per_page' => 18, 'paged' => $paged );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
echo '<div class="project p-project" data-filter="">';
echo '<a href="'.get_permalink( $post->ID).'">';
the_post_thumbnail();
echo '</a>';
echo '</div>';
endwhile;
?>
在添加分页之后,重置循环也可能是一个好主意,以便将WP返回到物理页面(而不是归档列表)。您可以通过以下方式执行此操作:
<?php wp_reset_postdata(); ?>
为什么要从这里开始使用自己的查询?Wordpress的归档功能已经为您的应用程序构建了正确的查询。只需使用archiv.php
模板作为基础-创建一个副本,适当命名,以便在显示自定义帖子类型的存档时使用,然后相应地调整它以生成所需的输出。是的,我正在使用archive-projects.php模板进行存档。然而,由于我的www.website.co.uk/projects/并不是在寻找归档模板文件,它是在寻找page-template.php。通过这种方式,我还可以包含来自wp admin的页面内容。这有意义吗?为什么要从这里开始使用自己的查询?Wordpress的归档功能已经为您的应用程序构建了正确的查询。只需使用archiv.php
模板作为基础-创建一个副本,适当命名,以便在显示自定义帖子类型的存档时使用,然后相应地调整它以生成所需的输出。是的,我正在使用archive-projects.php模板进行存档。然而,由于我的www.website.co.uk/projects/并不是在寻找归档模板文件,它是在寻找page-template.php。通过这种方式,我还可以包含来自wp admin的页面内容。这有意义吗?谢谢@Phill。这是伟大的工作,唯一的元素我缺少的是实际的链接到上一页和下一页。我可以把我的例子放在页面顶部吗?谢谢@Phill。这是伟大的工作,唯一的元素我缺少的是实际的链接到上一页和下一页。我可以把我的例子放在这一页的顶部吗?