我在路的wp-content /插件/劫持创建的插件文件夹,然后里面卡住这个文件plugin.php。
<?php
/*
Plugin Name: Hijack
Plugin URI: http://example.com/contact
Description: Sample URL Hijacker Plugin
Author: John Doe
Version: 1.1
Author URI: http://example.com/contact
*/
add_filter('init','Hijack');
function Hijack() {
$URL = get_bloginfo('wpurl');
$PLUGIN = $_SERVER['SCRIPT_FILENAME'];
$PLUGIN = str_replace('/index.php','',$PLUGIN);
$PLUGIN = $PLUGIN . '/wp-content/plugins/hijack';
$sHijack = '/catalog';
$sURL = $_SERVER['REDIRECT_URL'];
if (strpos(' ' . $sURL,$sHijack)>0) {
$sYank = $URL;
$sYank = str_replace('http://','',$sYank);
$sYank = str_replace('https://','',$sYank);
$sYank = str_replace($_SERVER['SERVER_NAME'] . '/','',$sYank);
$sYank = $sYank . $sHijack;
$sTemp = str_replace($sYank,'',$sURL);
$sTemp = str_replace($sYank . '/','',$sTemp);
$sTemp = str_replace('//','/',$sTemp);
if ((substr($sTemp,-1,1) == '/') and ($sTemp != '/')) {
$sTemp = substr($sTemp, 0, -1);
}
define('VARS',$sTemp);
include($PLUGIN . '/index.php');
exit(0);
}
}
然后,从那里,我加入可湿性粉剂内容/插件/劫持/ index.php的只是一个测试用例以及使用该代码:
<?php
echo VARS;
echo "<br />\n";
print_r($_GET);
在该点,当所述插件被激活,我可以将/ catalog,/ catalog/products/400等所有URL重定向到我的劫持插件文件夹中的index.php文件,然后index.php会像我的Web应用的前端控制器一样加载WordPress的。 (我希望您熟悉PHP编程的MVC模型。)然后可以重写前端控制器,以根据VARS中的内容调用页面控制器。
你应该看看add_rewrite_rule功能和query_vars过滤器。它仅仅是为了这个目的。 – jmacinnes 2012-12-12 13:43:56