【发布时间】: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