假设你的意思是$post->ID
, 您可以使用post_link
和post_type_link
用于附加查询字符串的筛选器。我们正在使用add_query_arg()
执行此操作的函数:
/**
* Modify the posts navigation WHERE clause
* to include our acceptable post types
*
* @param String $post_link - Post URL
* @param WP_Post $post - Current Post
*
* @return String
*/
function wpse375877_link_referrer( $post_link, $post ) {
// Return Early
if( is_admin() ) {
return $post_link;
}
return add_query_arg( array(
\'id\' => $post->ID,
\'referrer\' => $post_link,
) );
}
add_filter( \'post_link\', \'wpse375877_link_referrer\', 20, 2 );
add_filter( \'post_type_link\', \'wpse375877_link_referrer\', 20, 2 );
以上确保了任何WordPress函数都将获得一个修改后的post URL。现在,如果我们想重定向任何缺少此查询字符串的URL,您可以使用
template_redirect
行动挂钩:
/**
* Redirect any items without query string
*
* @return void
*/
function wpse375877_redirect_to_referrer() {
if( ! isset( $_GET, $_GET[\'id\'], $_GET[\'referrer\'] ) ) {
wp_safe_redirect(
add_query_arg( array(
\'id\' => get_the_ID(),
\'referrer\' => get_permalink(),
), get_permalink() )
);
exit();
}
}
add_action( \'template_redirect\', \'wpse375877_redirect_to_referrer\' );
我不能百分之百确定我是否应该使用
urlencode()
是否在这些URL上。