PHP - 从函数返回变量(返回不工作)

时间:2017-03-17 00:10:39

标签: php wordpress plugins url-rewriting

对于WordPress中的特定情况,我尝试在我的域名wp-admin之间添加'/ blog',因此它看起来像http://example.com/blog/wp-admin

我已经有一个.htaccess文件可以重写网站99%的网址,但它不会重写按日期/类别过滤生成的网址。

另一个有效的解决方案是编辑核心文件edit.php以包含'/ blog',但我宁愿不触及核心文件

以下是我更改edit.php时的效果:

elseif ( ! empty($_REQUEST['_wp_http_referer']) ) {
   wp_redirect( '/blog' . remove_query_arg( array('_wp_http_referer', '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) ) );
   exit;
}

这是我的插件,我正在尝试编写以解决问题而不触及核心:

function change_filter_URL() {
  if (strpos($_SERVER['REQUEST_URI'], '/wp-admin') === 0) {
    echo '/blog' . $_SERVER['REQUEST_URI'] . '<br>';
    $url = '/blog' . $_SERVER['REQUEST_URI'];
    return $url;
    echo $url;
  }
}
add_action('init', 'change_filter_URL');

如果我发表评论return $url;并离开echo $url;,则会回显正确的网址。但我目前的问题是return $url没有返回/输出任何东西。第一个echo有效。我想知道如何才能正确返回$url

1 个答案:

答案 0 :(得分:2)

您可以使用header()将查询重定向到正确的网址:

function change_filter_URL() {
  if (strpos($_SERVER['REQUEST_URI'], '/wp-admin') === 0 &&
      strpos($_SERVER['REQUEST_URI'], '/blog/') === FALSE) {
    $url = '/blog' . $_SERVER['REQUEST_URI'];
    header('Location: '.$url);  
  }
}