esc_url returns incorrect URL

时间:2013-10-26 作者:Jacob

原因是什么<?php echo esc_url( home_url( \'/\' ) ); ?> 将我发送到错误的网站?

我在搜索栏中使用它,当我搜索一个值时,它会将我发送到我的另一个网站,但我不确定我是怎么做到的。

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

结果很简单,但我忽略了。因为我总是使用<?php get_search_form(); ?> 对于我的搜索表单,我自然会假设在搜索区域的分区模板中,我正在使用它,但我没有。

我根据我为另一个网站创建的另一个主题定制了主题,出于某种原因,在表单的action="" 我硬编码了第一个站点的url;这就是为什么我一直被转发到那里。

我想我检查了这一部分,但一定是忽略了它。大约两天后,由于评论中的建议让我重新思考了这个问题,我决定重新检查这个部分。

所以,是的,真是愚蠢的大脑放屁,但现在问题解决了。

SO网友:Amal Murali

考虑以下代码:

<form role="search" method="get" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
home_url() 是一个Wordpress函数,用于检索当前站点的主URL。使用可选$path 参数,它返回带有可选$path 附加了参数。

以下是函数定义(来自wp-includes/link-template.php L#1959):

function get_home_url( $blog_id = null, $path = \'\', $scheme = null ) {
    $orig_scheme = $scheme;

    if ( empty( $blog_id ) || !is_multisite() ) {
        $url = get_option( \'home\' );
    } else {
        switch_to_blog( $blog_id );
        $url = get_option( \'home\' );
        restore_current_blog();
    }

    if ( ! in_array( $scheme, array( \'http\', \'https\', \'relative\' ) ) ) {
        if ( is_ssl() && ! is_admin() && \'wp-login.php\' !== $GLOBALS[\'pagenow\'] )
            $scheme = \'https\';
        else
            $scheme = parse_url( $url, PHP_URL_SCHEME );
    }

    $url = set_url_scheme( $url, $scheme );

    if ( $path && is_string( $path ) )
        $url .= \'/\' . ltrim( $path, \'/\' );

    return apply_filters( \'home_url\', $url, $path, $orig_scheme, $blog_id );
}
基本上,这个函数中没有任何东西会返回一个不知从何而来的随机URL。

当出现这种情况时,最好的办法是grep 你的线索代码。

在Wordpress根目录的shell中运行此命令:

grep -nr "http://randomurl.com"
这将列出http://randomurl.com 并显示它们出现在中的文件。如果出现多次,可以使用更高级的搜索(使用命令行选项,例如awk) 看看到底是谁在制造麻烦。

注意:我知道这个问题已经解决了,但这可能对未来的访问者有用,所以我将其作为一个答案发布:)

结束

相关推荐

如何在插件的uninstall.php中删除自定义分类术语?

我正在编写插件的卸载。php文件,并希望它删除插件自定义分类法中创建的任何术语。在插件的卸载中。我正在使用的php文件:// Delete all custom terms for this taxonomy $terms = get_terms(\'custom_taxonomy\'); foreach ($terms as $term) { wp_delete_term( $term->ID, \'custom_taxonomy\' ); } 问