有没有一种方法可以仅使用functions.php来控制Wordpress中自定义帖子类型显示多少帖子? 我的查询不适用于“ posts_per_page”。
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$query_args = array(
'posts_per_page' => 8,
'paged' => $paged
);
$query = new WP_Query( $query_args );
if ( have_posts() ) : while ( have_posts() ) : the_post();
$terms = get_the_terms($post->ID, 'workscat');
$nameTerm = $terms[0]->name;
$thumbnail = wp_get_attachment_url(get_post_thumbnail_id($post->ID), 'gallery-thumb');
if(empty($thumbnail)){ $thumbnail = APP_URL . "images/works/no-image.jpg";}
?>
答案 0 :(得分:2)
无论何时使用“自定义帖子类型”,查询都不会返回任何内容,但是您觉得自己所做的一切都正确无误,请访问“设置” >>“永久链接”以重置永久链接。选择默认,然后按保存更改,然后将其切换回帖子名称,然后再次按保存更改。
此外,您可以修改主查询,只需使存档模板返回结果即可,而无需新的WP_Query对象。
在您的情况下,我将使用pre_get_posts
钩子,并过滤主查询。将以下代码添加到您的functions.php
function set_posts_per_page_for_custom_cpt( $query ) {
if ( !is_admin() && $query->is_main_query() && is_post_type_archive( 'CustomPostType' ) )
{
$query->set( 'posts_per_page', '10' );
}
}
add_action( 'pre_get_posts', 'set_posts_per_page_for_custom_cpt' );
将此代码放在您的functions.php文件中。
希望这会有所帮助
答案 1 :(得分:1)
您可以在您的pre_get_posts
中使用function.php
操作来执行此操作,以下是其工作代码
<?php
function my_cptui_change_posts_per_page( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
if ( is_post_type_archive( 'posttype1' ) ) {
$query->set( 'posts_per_page', 8 );
}
if ( is_post_type_archive( 'posttype2' ) ) {
$query->set( 'posts_per_page', 12 );
}
//$query->is_category('mycategoryname') remove this if you want for all taxonomy categories
if ( $query->is_tax('mytaxonomyname') || $query->is_category('mycategoryname') ) {
set_query_var('posts_per_page', 15);
}
}
add_filter( 'pre_get_posts', 'my_cptui_change_posts_per_page' );
注意:(如果不起作用,请转到设置-永久链接并重置永久链接)
经过测试,效果很好