我可以用什么替换‘.get_bloginfo(’url‘)。’用来返回当前URL而不是家庭地址?

时间:2012-11-06 作者:paradroid

我正在使用Any Mobile Theme Switcher 可在完整主题和移动主题之间自动切换的插件。

唯一的问题是,“切换到移动站点”和“切换到完整站点”链接会将您带到主页,而不是当前页面。

相关的代码位似乎是这样的:

function show_theme_switch_link_func( $atts ){
        $desktopSwitchLink      = get_option(\'show_switch_link_for_desktop\');
        global $shown_theme;
        global $status;
        if ($shown_theme){
                $return = \'<a rel="external" data-ajax="false" href="\'.get_bloginfo(\'url\').\'?am_force_theme_layout=desktop" class="am-switch-btn godesktop">\'.get_option(\'desktop_view_theme_link_text\').\'</a>\';
        } else {
                if ((!empty($status)) || ($desktopSwitchLink == \'yes\')){
                        $return = \'<a href="\'.get_bloginfo(\'url\').\'?am_force_theme_layout=mobile" class="am-switch-btn gomobile">\'.get_option(\'mobile_view_theme_link_text\').\'</a>\';
                }
        }
        return $return;
}
我可以替换吗\'.get_bloginfo(\'url\').\' 使用将返回当前URL而不是家庭地址的内容?

2 个回复
最合适的回答,由SO网友:Joseph Leedy 整理而成

快速Google search 带我从一个blog post 作者:Konstantin Kovshenin:

global $wp;
$current_url = add_query_arg( $wp->query_string, \'\', home_url( $wp->request ) );
将其与您的原始代码相结合,您就有了此代码(已更新以符合WordPress编码标准):

function show_theme_switch_link_func( $atts ){
    global $shown_theme, $status, $wp;

    $desktop_switch_link = get_option( \'show_switch_link_for_desktop\' );
    $current_url = add_query_arg( $wp->query_string, \'\', home_url( $wp->request ) );

    if ( $shown_theme ) {
        $return = \'<a rel="external" data-ajax="false" href="\' . add_query_arg( \'am_force_theme_layout\', \'desktop\', $current_url ) . \'" class="am-switch-btn godesktop">\' . get_option( \'desktop_view_theme_link_text\' ) . \'</a>\';
    } else {
        if ( !empty( $status ) || $desktop_switch_link == \'yes\' ) {
            $return = \'<a href="\' . add_query_arg( \'am_force_theme_layout\', \'mobile\', $current_url ) . \'" class="am-switch-btn gomobile">\' . get_option( \'mobile_view_theme_link_text\' ) . \'</a>\';
        }
    }

    return $return;
}

SO网友:Charles

显示当前URL的代码为:

<?php echo $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] ?>
因此,对于您的代码示例,这应该是可行的:

function show_theme_switch_link_func( $atts ){
    $desktopSwitchLink      = get_option(\'show_switch_link_for_desktop\');
    global $shown_theme;
    global $status;
    $currentURL = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
    if ($shown_theme){
            $return = \'<a rel="external" data-ajax="false" href="\'.$currentURL.\'?am_force_theme_layout=desktop" class="am-switch-btn godesktop">\'.get_option(\'desktop_view_theme_link_text\').\'</a>\';
    } else {
            if ((!empty($status)) || ($desktopSwitchLink == \'yes\')){
                    $return = \'<a href="\'.$currentURL.\'?am_force_theme_layout=mobile" class="am-switch-btn gomobile">\'.get_option(\'mobile_view_theme_link_text\').\'</a>\';
            }
    }
    return $return;
}
试试看会发生什么。。。

结束

相关推荐

URLs of plugin resources?

我正在尝试将插件的脚本和css文件添加到管理标头中。是否有类似的功能get_bloginfo(\'url\') 我可以使用它来正确引用文件,而不必硬编码url?