【问题标题】:PHP - Returning a variable from a function (return not working)PHP - 从函数返回变量(返回不起作用)
【发布时间】:2017-08-08 09:21:22
【问题描述】:

对于 WordPress 中的特定场景,我正在尝试在我的域和 wp-admin 之间附加“/blog”,因此它可能看起来像 http://example.com/blog/wp-admin

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

另一个可行的解决方案是编辑核心文件 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;,它会回显到正确的 URL。但我目前的问题是return $url 没有返回/输出任何东西。第一个echo 有效。我想知道如何正确返回$url?

【问题讨论】:

  • 我的假设是 init 操作不期望返回值,它只是初始化的触发器。见wp-settings.phpdo_action( 'init' );
  • @Scuzzy 我已经尝试过其他更早触发的钩子,例如 muplugins_loaded、plugins_loaded 和 after_setup_theme 根据 [this thread]wordpress.stackexchange.com/questions/23631/…) 但它们不起作用要么,但我会继续调查

标签: php wordpress plugins url-rewriting


【解决方案1】:

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

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);  
  }
}

【讨论】:

  • 非常感谢!您的解决方案在大多数情况下都有效 - wp-admin 的这个特定部分不会被 /blog 重写,我正在尝试将 /blog 添加到。我认为我的行 if (strpos($_SERVER['REQUEST_URI'], '/wp-admin') === 0) { 是不正确的,因为它针对所有具有 /wp-admin
  • 所以您提供的功能在我登录仪表板后针对具有/wp-admin 的所有内容.. 有没有办法专门针对缺少/blog 的网址? http://example.com/wp-admin -> http://example.com/blog/wp-admin
  • 我已更新答案以检查请求的 URI 是否已包含 /blog/。这对你有用吗,还是你想重定向所有页面,而不仅仅是 wp-admin 那些?
  • 啊我意识到我的错误了!因为这个函数是在.htaccess重写URL从blog.example.com到example.com/blog之前执行的——在.htaccess重写URL之后可以加载这个函数吗?
  • 但是你的函数很有意义而且很完美!非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
相关资源
最近更新 更多