所以你在评论中说:
如果我点击第二或第三或任何页码,它会将我重定向到同一页(首页)
这是因为您的查询参数($query
) 缺少paged
argument 这是为帖子分页所需的。
因此,请确保将该参数添加到查询中。E、 g.使用数组:
$query = array(
\'posts_per_page\' => 6,
\'paged\' => get_query_var( \'page\' ),
);
请注意,我假设您实际上正在使用
static front page, 因此我使用
get_query_var( \'page\' )
而不是
get_query_var( \'paged\' )
(请注意
page
vs公司
paged
— 在
$query
尽管如此,它是
paged
).
所以你也应该用它paginate_links()
:
echo paginate_links( array(
... your args.
\'current\' => max( 1, get_query_var( \'page\' ) ), // use \'page\' and not \'paged\'
... your args.
) );
顺便说一句,在问题中,(似乎)你输入了一个错误:那
$query->max_num_pages
应该是
$queryObject->max_num_pages
.
如果您实际上没有使用静态首页,那么您应该避免404个由于与WordPress主查询冲突而导致的分页错误。
更新(抱歉,我没有注意到add_shortcode()
调用您的代码。)
无输出!我错过了什么?
正如注释中所指出的那样,短代码必须返回最终输出,并且不回显,短代码函数不应回显任何其他内容。否则,输出将错误地放置在帖子内容中,并在REST API响应中导致JSON错误,并导致无法通过Gutenberg/块编辑器保存帖子。这只是可能发生的两个示例问题。
因此,如果您的短代码使用复杂的HTML标记,您可以使用output buffering; 否则,只需将输出存储在变量中,然后返回它即可。简化示例:
// Using output buffering:
function simpleblog() {
ob_start();
?>
some complex HTML
<?php
return ob_get_clean();
}
// Storing to a variable:
function simpleblog() {
$output = \'\';
// ... your code here; no \'echo\' calls.
$output .= \'foo bar\';
return $output;
}
https://codex.wordpress.org/Shortcode_API