gpt4 book ai didi

php - 在页面模板上使用工作分页的自定义 wp_query

转载 作者:行者123 更新时间:2023-12-02 00:26:55 27 4
gpt4 key购买 nike

我正在尝试向 WordPress 模板添加自定义查询并包含分页,但我的分页没有出现,例如,我正在尝试将其添加到 page.php。

我有以下标记,当放置在类别模板(如 category.php)中时,它可以完美地工作,分页显示并且功能正常。问题是当相同的代码放在 page.php 或任何自定义页面模板中时,分页不会出现。

查询:

              <?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$loop = new WP_Query(
array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged,
'orderby' => 'desc',
)
);
?>

<?php if ($loop->have_posts()): while ($loop->have_posts()) : $loop->the_post(); ?>

// Loop Markup goes here.

<?php endwhile; ?>
<?php endif; ?>

<?php wp_reset_query(); ?>

<?php pagination(); ?>

在 functions.php 中定义的 Pagination():

              function pagination() {
global $wp_query;
$big = 999999999;
echo paginate_links(array(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $wp_query->max_num_pages
));
}
add_action('init', 'pagination');

我看过一些帖子就同一主题请求帮助,但我没有找到一个优雅的解决方案。

如有任何建议,我们将不胜感激!我对 PHP 的了解非常有限,我从 Todd Motto 的 HTML5 Blank 主题中获取了 pagination() 函数,所以我不能 100% 理解该函数定义的内容。

最佳答案

通过将原始帖子中的代码与 this tutorial 中的以下代码合并,设法找到了解决方案:

我发布了一个简单的 page.php 的完整示例,供任何迷路且需要更多上下文来实现它的人使用,这对我来说非常有用,没有任何损坏的方面,例如每个页码返回相同的帖子或任何东西。

<?php get_header(); ?>

<?php if (have_posts()): while (have_posts()) : the_post(); ?>

<div class="the_loop">

<?php
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} elseif ( get_query_var('page') ) { // 'page' is used instead of 'paged' on Static Front Page
$paged = get_query_var('page');
} else {
$paged = 1;
}
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$loop = new WP_Query(
array(
'post_type' => 'post',
'posts_per_page' => get_option('posts_per_page'),
'paged' => $paged,
'post_status' => 'publish',
'orderby' => 'desc',
'orderby' => 'date' // modified | title | name | ID | rand
)
);
?>

<?php if ($loop->have_posts()): while ($loop->have_posts()) : $loop->the_post(); ?>

// Loop code goes here.

<?php endwhile; ?>

<?php if ($loop->max_num_pages > 1) : // custom pagination ?>
<?php
$orig_query = $wp_query; // fix for pagination to work
$wp_query = $loop;
$big = 999999999;
echo paginate_links(array(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $wp_query->max_num_pages
));
$wp_query = $orig_query; // fix for pagination to work
?>
<?php endif; ?>

<?php wp_reset_postdata(); else: echo '<p>'.__('Sorry, no posts matched your criteria.').'</p>'; endif; ?>

</div>

<?php endwhile; ?>
<?php endif; ?>

<?php get_template_part('footer'); ?>

关于php - 在页面模板上使用工作分页的自定义 wp_query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53437554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com