我在路的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