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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插件如何在WordPress中劫持URL? [关闭]相关的知识,希望对你有一定的参考价值。

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

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

答案

我在路径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 />
";
print_r($_GET);

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

另一答案

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

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

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

以上是关于插件如何在WordPress中劫持URL? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

更好的 SEO 从文章的 URL Slug 中删除“停止”词? [关闭]

如何使用 WordPress Woo-Commerce 插件根据 url 参数显示不同的产品?

如何在 Wordpress 插件中正确重定向?

如何在 wordpress.com 上写博客代码 [关闭]

如何保存我的 Wordpress 插件中的设置?

WordPress插件可在编辑器中插入代码[关闭]