重定向到/wp-admin/edit.php,而不是wp_reDirect url

时间:2020-12-30 作者:J.BizMai

我正在尝试使用带有参数的链接在管理编辑帖子页面上更改自定义帖子类型。问题是当我试图重定向到没有这些自定义参数的页面时,谢谢wp_redirect().

这是我在类中的代码:

    add_action(\'admin_init\',array( $this, \'foo_actions\' ) );

    function  foo_actions(){
         if( isset( $_GET[\'foo_action\'] ) ){
                // ob_clean();
                // ob_start();
                $order_id = (int) $_GET[\'post\'];
                switch ( $_GET[\'foo_action\'] ) {
                    case ACTION_RENEW_PLAN :
                        Orders::renew_plan($order_id);
                        break;
                    case ACTION_UNRENEW_PLAN :
                        Orders::unrenew_plan($order_id);
                        break;
                    case ACTION_ENABLE_AUTO_PLAN_RENEWED :
                        Orders::enable_auto_plan_renewed($order_id);
                        break;
                    case ACTION_DISABLE_AUTO_PLAN_RENEWED :
                        Orders::disable_auto_plan_renewed($order_id);
                        break;
                } 
                $edit_post_link = get_edit_post_link($order_id);
                wp_redirect( $edit_post_link );
                exit();
         }
    }
此代码重定向到/wp-admin/edit.php 而不是$edit_post_link.我怎样才能解决这个问题?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

只需更改的第二个参数get_edit_post_link(), 这是$context 并默认为display. 该参数决定了如何输出符号和字符(即。&), 默认编码为& (因为默认上下文是显示URL,因此& 已编码)。

使用带有重定向的URL时,您需要使用edit (或除display) 上下文:

$edit_post_link = get_edit_post_link( $order_id, \'edit\' );
wp_redirect( $edit_post_link );
display 上下文:

$edit_post_link = get_edit_post_link( $order_id, \'display\' );

// Or you can simply ignore the second parameter:
$edit_post_link = get_edit_post_link( $order_id );

var_dump( $edit_post_link ); // & becomes &

相关推荐