你大部分都是对的。然而,有一点需要注意:$url
在你的上下文中没有任何意义。通过使用这样的方法进行调试,可以很容易地证明这一点
add_action(\'template_redirect\', \'post_redirect_by_custom_filters\');
function post_redirect_by_custom_filters() {
var_dump($url);
wp_die();
}
因此,您的代码只剩下定义
$url
作为请求的URL(或至少是路径):
add_action(\'template_redirect\', \'post_redirect_by_custom_filters\');
function post_redirect_by_custom_filters() {
global $post;
// this array can contain category names, slugs or even IDs.
$catArray = [\'grill-rezepte\',\'Test2\'];
// get current path
$url = $_SERVER[\'REQUEST_URI\'];
// slug is already in URL, return early
if (strpos($url,\'grill-rezept\') !== false) {
return;
}
if (is_single($post->ID) && has_category($catArray, $post)) {
$new_url = "https://bbqpit.de/grill-rezepte/{$post->post_name}/";
wp_redirect($new_url, 301);
exit;
}
}