在开发WordPress主题时,我们可以利用分类模板来定制每个分类显示的文章数量。以下是一个示例代码,展示了如何通过设置不同的分类ID和对应的每页文章数来实现这一功能:
“`php
function custom_query_mods( $query ) {
// 获取设置中的分类ID和数量
$cat1_id = get_theme_mod(‘picmoban_id’);
$cat2_id = get_theme_mod(‘videomoban_id’);
$cat3_id = get_theme_mod(‘postmoban_id’);
$cat4_id = get_theme_mod(‘topicmoban_id’);
$cat1_num = get_theme_mod(‘picmobannumb’, 10);
$cat2_num = get_theme_mod(‘videomobannumb’, 10);
$cat3_num = get_theme_mod(‘postmobannumb’, 10);
$cat4_num = get_theme_mod(‘topicmobannumb’, 10);
// 如果不是主查询,跳过
if (!$query->is_mAIn_query()) {
return;
}
// 根据分类ID判断并设置每页文章数量
if (is_category($cat1_id)) {
$query->set(‘posts_per_page’, $cat1_num);
} elseif (is_category($cat2_id)) {
$query->set(‘posts_per_page’, $cat2_num);
} elseif (is_category($cat3_id)) {
$query->set(‘posts_per_page’, $cat3_num);
} elseif (is_category($cat4_id)) {
$query->set(‘posts_per_page’, $cat4_num);
}
}
add_Action(‘pre_get_posts’, ‘custom_query_mods’);
“`
在这个代码中,我们使用了`get_theme_mod()`函数来获取主题设置中的分类ID和每页文章数。如果某个分类ID未设置,我们会使用默认值(如10)。然后,我们检查当前查询是否为主查询,如果是,我们就根据当前的分类ID来设置`posts_per_page`,从而改变每页显示的文章数量。
请注意,你需要确保在WordPress的主题设置中已经设置了相应的分类ID和每页文章数变量,例如`picmoban_id`、`picmobannumb`等。这些设置可以通过`functions.php`文件或其他方式提供给用户自定义。