明白了!
我不确定罪魁祸首到底是什么,但我做了一些事情,结果它起了作用。
以下是我使用的代码摘要:
我根据中的代码定义了这个助手函数redirect_cannonical()
function get_current_url() {
$current_url = is_ssl() ? \'https://\' : \'http://\';
$current_url .= $_SERVER[\'HTTP_HOST\'];
$current_url .= $_SERVER[\'REQUEST_URI\'];
return $current_url;
}
在我的CPT元数据库中,底部有一个指向编辑标签的链接。自定义分类术语的php页面:
echo \'<p><a class="sg_edit_link" href="\' . admin_url( \'edit-tags.php?action=edit&taxonomy=stat_groups&post_type=stats&tag_ID=\'.$args[\'id\'] ).\'&redirect=\'.urlencode( get_current_url() ).\'">Edit \' . $args[\'name\'] . \' Stat Group</a></p>\';
这是一个动态创建的元盒(每个术语一个),因此
$args
是传递给
add_meta_box()
作用
因此,链接将当前url作为查询字符串中的“重定向”参数传递。
在“自定义税务术语编辑”页面上,表单中添加了字段。我添加这些行来捕获重定向url,如果有,则将其添加到表单中:
if ( isset($_GET[\'redirect\']) ) {
echo \'<input type="hidden" name="redirect" value="\'.esc_url($_GET[\'redirect\']).\'">\';
}
现在,在保存字段时将发布这些信息,因此在保存额外字段数据的函数中,我在更新选项后添加了以下内容:
if (isset($_POST[\'redirect\'])) {
$redirect = esc_url_raw( $_POST[\'redirect\'] );
wp_redirect( $redirect );
exit;
}
我遗漏了一件可能是导致它不起作用的唯一原因,那就是
exit;
在最后一个代码块中。这一点被指出是非常重要的,应包括在法典中
wp_redirect()
但我想我错过了:/
这是我的解决方案,我很想知道是否有一种更优雅的方法可以做到这一点,尽管这并不太糟糕。