插件如何在WordPress中劫持URL? [关闭]

问题描述 投票:1回答:2

当然我总是可以编辑WordPress的.htaccess文件,但这会让我的WP插件有点不标准。相反,通过WordPress中的自定义插件劫持URL的方法是什么?

例如,假设我想构建一个精心制作的产品目录,可以作为插件安装在WordPress中。激活后,您可以进入插件的管理面板,并告诉它所有以“/ catalog”(或您选择的任何内容)开头的URL都将转到此产品目录应用程序。现在该应用程序将驻留在wp-content / plugins / mycatalog文件夹中。因此,/ catalog / product / 400将转到wp-content / plugins / mycatalog / app.php,然后将解析URL中的“product”和“400”。

php wordpress plugins
2个回答
1
投票

我在路径wp-content / plugins / hijack中创建了一个插件文件夹,然后将这个文件插入了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);
    }
}

然后,从那里,我添加了wp-content / plugins / hijack / index.php作为测试用例并使用了以下代码:

<?php

echo VARS;
echo "<br />\n";
print_r($_GET);

此时,当插件被激活时,我可以将/ catalog,/ catalog / products / 400等所有URL重定向到我的hijack插件文件夹中的index.php文件,然后index.php就像前面一样我的网络应用程序的控制器加载在WordPress内。 (我希望您熟悉PHP编程的MVC模型。)然后可以根据VARS中的内容重写前端控制器以调用页面控制器。


0
投票

我不确定我到底知道你想要什么,但你总是可以用$_SERVER['REQUEST_URI']检查PHP中文档的请求URL,并使用像parse_urlexplode("/", $_SERVER['REQUEST_URI'])这样的东西来剖析它。

至于重定向页面,您可以使用带有HTTP重定向或META重定向的header()调用。但这些都不是特定于WordPress的。 redirection插件可能会满足您的需求:

http://wordpress.org/extend/plugins/redirection/

© www.soinside.com 2019 - 2024. All rights reserved.