更改从定制器返回的URL

时间:2015-02-15 作者:user1048676

我想在某人使用Wordpress中的“外观->自定义”选项取消或关闭更改后更改返回URL。在wp-admin/customize.php 文件下面是控制返回URL的代码:

wp_reset_vars( array( \'url\', \'return\' ) );
$url = wp_unslash( $url );
$url = wp_validate_redirect( $url, home_url( \'/\' ) );
if ( $return ) {
    $return = wp_unslash( $return );
    $return = wp_validate_redirect( $return );
}
if ( ! $return ) {
    if ( $url ) {
        $return = $url;
    } elseif ( current_user_can( \'edit_theme_options\' ) || current_user_can( \'switch_themes\' ) ) {
        $return = admin_url( \'themes.php\' );
    } else {
        $return = admin_url();
    }
}
URL以以下代码输出到屏幕:

<a class="customize-controls-close" href="<?php echo esc_url( $return ); ?>">
    <span class="screen-reader-text"><?php _e( \'Cancel\' ); ?></span>
</a> 
有没有办法控制返回URL而不修改核心wp-admin/customize.php 文件

1 个回复
SO网友:bueltge

是的,这是可能的。在为自定义视图创建的链接上,可以为该选项添加一个带有url的返回参数。

我的意思是,你必须在管理菜单中更改自定义链接的链接。下文对此进行了说明。我首先在“外观”菜单中创建一个链接,然后解析这个slug,将url更改为自定义url,包括两个参数。

  1. url - 为在自定义程序中加载特定页面而定义return - 定义了关闭自定义程序的url,返回url。重要的部分是函数add_query_arg() 将此参数添加到url。

    $login_url = wp_login_url();
    $url       = add_query_arg(
        array(
            \'url\'    => urlencode( $login_url ),
            \'return\' => admin_url( \'themes.php\' ),
        ),
        admin_url( \'customize.php\' )
    );
    
    下面的来源和做完整的工作,包括添加菜单项和更改他的链接。您必须加载,并将其包含在主题插件中。

        <?php # -*- coding: utf-8 -*-
    
        namespace CustomizeLogin\\Admin;
    
        \\add_action( \'admin_menu\', \'\\CustomizeLogin\\Admin\\add_menu\' );
        function add_menu() {
    
            if ( ! current_user_can( \'customize\' ) ) {
                return NULL;
            }
    
            add_theme_page(
                esc_attr__( \'Customize the Login screen\', \'customize-login\' ),
                esc_attr__( \'Customize Login\', \'customize-login\' ),
                \'manage_options\',
                \'customize-login\',
                \'__return_null()\'
            );
        }
    
        \\add_action( \'admin_menu\', \'\\CustomizeLogin\\Admin\\change_menu_url\', 99 );
        function change_menu_url() {
    
            global $submenu;
    
            $parent = \'themes.php\';
            $page   = \'customize-login\';
    
            // Create specific url for login view
            $login_url = wp_login_url();
            $url       = add_query_arg(
                array(
                    \'url\'    => urlencode( $login_url ),
                    \'return\' => admin_url( \'themes.php\' ),
                ),
                admin_url( \'customize.php\' )
            );
    
            // If is Not Design Menu, return
            if ( ! isset( $submenu[ $parent ] ) ) {
                return NULL;
            }
    
            foreach ( $submenu[ $parent ] as $key => $value ) {
                // Set new URL for menu item
                if ( $page === $value[ 2 ] ) {
                    $submenu[ $parent ][ $key ][ 2 ] = $url;
                    break;
                }
            }
        }
    

结束

相关推荐

插件开发-获取管理URL(包括不使用wp-admin的情况)

我目前正在编写WordPress插件,并希望检索WordPress管理员url。假设每个WordPress安装都使用默认的wp-admin 鼻涕虫我可以打电话get_admin_url(), 这是一个包装get_site_url(), 具有wp-admin 硬编码(参见此处:http://wpseek.com/function/get_admin_url/).然而,我不想在这个url永远不会改变的假设下工作。我希望能够检索url,无论它是否为默认url;i、 e.对于上述任一情况:http://examp