gpt4 book ai didi

php - 如何将 WordPress 中 the_posts_pagination 的页码包装到我自己的 div 中?

转载 作者:可可西里 更新时间:2023-10-31 22:10:06 25 4
gpt4 key购买 nike

在 WordPress 中,我使用 the_posts_pagination 吐出上一个/下一个按钮和它们之间的页码。当我想将某些元素分组到 div 中时,我不喜欢 WordPress 吐出自己的标记的方式。

这是我当前的代码:

PHP

<?php the_posts_pagination( array(
'mid_size' => 2,
'prev_text' => __( 'Previous Page', 'textdomain' ),
'next_text' => __( 'Next Page', 'textdomain' ),
'screen_reader_text' => ( '' )
) ); ?>

它吐出这个:

HTML

<nav class="navigation pagination" role="navigation">
<div class="nav-links">
<a class="prev page-numbers" href="#">Prev Page</a>
<a class="page-numbers" href="#">1</a>
<span class="page-numbers current">2</span>
<a class="page-numbers" href="">3</a>
<a class="page-numbers" href="">4</a>
<a class="next page-numbers" href="">Next Page</a>
</div>
</nav>

我希望能够让它看起来像这样:

<nav class="navigation pagination" role="navigation">
<div class="nav-links">
<a class="prev page-numbers" href="#">Prev Page</a>
<div class="page-numbers-container">
<a class="page-numbers" href="#">1</a>
<span class="page-numbers current">2</span>
<a class="page-numbers" href="">3</a>
<a class="page-numbers" href="">4</a>
</div>
<a class="next page-numbers" href="">Next Page</a>
</div>
</nav>

即使我可以将下一个和上一个链接包装在一个 div 中,那也很棒。我不想编辑核心 WordPress 文件中的任何内容。我需要编写一个函数吗?

编辑

这是在我的 index.php 中

<?php the_posts_pagination( wp_custom_pagination(['prev_text' => __( 'Previous Page', 'textdomain' ), 'next_text' => __( 'Next Page', 'textdomain' )])); ?>

这是我放在 functions.php 里面的内容

function wp_custom_pagination($args = [], $class = 'pagination') {

if ($GLOBALS['wp_query']->max_num_pages <= 1) return;

$args = wp_parse_args( $args, [
'mid_size' => 2,
'prev_next' => false,
'prev_text' => __('Older posts', 'textdomain'),
'next_text' => __('Newer posts', 'textdomain'),
'screen_reader_text' => __('Posts navigation', 'textdomain'),
]);

$links = paginate_links($args);
$next_link = get_previous_posts_link($args['next_text']);
$prev_link = get_next_posts_link($args['prev_text']);
$template = apply_filters( 'navigation_markup_template', '
<nav class="navigation %1$s" role="navigation">
<h2 class="screen-reader-text">%2$s</h2>
<div class="nav-links">%3$s<div class="page-numbers-container">%4$s</div>%5$s</div>
</nav>', $args, $class);

echo sprintf($template, $class, $args['screen_reader_text'], $prev_link, $links, $next_link);

}

最佳答案

the_posts_pagination()使用 paginate_links()它没有过滤器来根据需要更改输出。

那么,让我们创建一个自定义分页模板:

function the_so37580965_wp_custom_pagination($args = [], $class = 'pagination') {

if ($GLOBALS['wp_query']->max_num_pages <= 1) return;

$args = wp_parse_args( $args, [
'mid_size' => 2,
'prev_next' => false,
'prev_text' => __('Older posts', 'textdomain'),
'next_text' => __('Newer posts', 'textdomain'),
'screen_reader_text' => __('Posts navigation', 'textdomain'),
]);

$links = paginate_links($args);
$next_link = get_previous_posts_link($args['next_text']);
$prev_link = get_next_posts_link($args['prev_text']);
$template = apply_filters( 'the_so37580965_navigation_markup_template', '
<nav class="navigation %1$s" role="navigation">
<h2 class="screen-reader-text">%2$s</h2>
<div class="nav-links">%3$s<div class="page-numbers-container">%4$s</div>%5$s</div>
</nav>', $args, $class);

echo sprintf($template, $class, $args['screen_reader_text'], $prev_link, $links, $next_link);

}

尝试一下。另外,看看 paginate_links()函数,您可能需要更多参数。

关于php - 如何将 WordPress 中 the_posts_pagination 的页码包装到我自己的 div 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37580965/

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