在内心深处,该函数使用get_pagenum_link()
. 这是可过滤的get_pagenum_link
滤器因此,您可以添加和删除使用全局变量的过滤器,该全局变量在检索链接之前在函数中设置:
function wpse_287817_add_query_args( $url ) {
global $wpse_287817_query_args;
return add_query_arg( $wpse_287817_query_args, $url );
}
add_filter( \'get_pagenum_link\', \'wpse_287817_add_query_args\', 10 );
function wpse_287817_get_next_posts_link( $label = null, $max_page = 0, $query_args = array() ) {
global $wpse_287817_query_args;
$wpse_287817_query_args = $query_args;
$link = get_next_posts_link( $label, $max_page );
return $link;
}
然后你会这样使用它:
$query_args = array(
\'q1\' => \'cats\',
\'q2\' => \'lasers\',
);
echo wpse_287817_get_next_posts_link( \'Next\', $max_page, $query_args );
这相当混乱,因为需要使用全局变量来传递要添加到URL的值。因此,如果您实际上不需要将查询参数传递到函数中,并且可以从过滤器回调中获取它们,请这样做。
例如,如果你只是想$_GET[]
URL上的变量,您根本不需要自定义函数或全局变量,只需在回调中设置即可:
function wpse_287817_add_query_args( $url ) {
$query_args = array();
if ( isset( $_GET[\'my_var\'] ) ) {
$query_args[] = $_GET[\'my_var\'];
}
if ( isset( $_GET[\'my_other_var\'] ) ) {
$query_args[] = $_GET[\'my_other_var\'];
}
return add_query_arg( $query_args, $url );
}
add_filter( \'get_pagenum_link\', \'wpse_287817_add_query_args\', 10 );