我想重写我的自定义插件URL

时间:2012-06-18 作者:Pranav Gandhi

我正在开发wordpress插件。我有一张这样的表格

    $action_url = WP_PLUGIN_URL .\'/demo-url-rewrite/include/test.php\';


   <form action="<?php echo $action_url; ?>" method="get" name="f1">
    Name : <input type="text" name="name" id="name" value=""><br />
    <input type="submit" name="b1" value="Save">
   </form>
当用户提交表单并执行操作时,我需要此url::http://mysite.com/Projects/demos/demo-url-rewrite/client/pranav-gandhi/

而不是此url::

http://mysite.com/Projects/demos/demo-url-rewrite/wp-content/plugins/demo-url-rewrite/include/test.php?name=Pranav+Gandhi&b1=Save

那么,我如何用worpress功能覆盖url呢。

thanx公司。

1 个回复
最合适的回答,由SO网友:Rutwick Gangurde 整理而成

你真的需要URL吗?只有当您希望搜索被索引时,才需要这样的URL。示例:Check this. (url中的“a”来自此页面和主页中的搜索表单)解析表单的理想方法是使用init 操作挂钩,而不是设置窗体操作。如果你仍然想要自定义URL,请告诉我,我会告诉你一个解决方案!

编辑:假设只更改客户端名称。

URL:

add_filter(\'init\', \'add_page_rewrite_rules\');
function add_page_rewrite_rules()
{
    global $wp_rewrite, $wp;

    //this will hold the text field data
    $wp->add_query_var(\'client_name\');

    //the actual rule
    add_rewrite_rule(\'^Projects/demos/demo-url-rewrite/client/(.*)?$\',\'index.php?pagename=client-data&client_name=$matches[1]\',\'top\');
}
现在用slug作为创建WP页client-data. 这是规则工作所必需的。制作页面模板,将其分配给此页面。确保页面模板中有以下两行。

global $wp, $wp_query;
$name = get_query_var(\'client_name\');
The$name var将有您在URL中传递的客户端名称,使用它进行处理,就像使用表单数据一样。您可以使用jQuery处理表单提交并重定向到此自定义URL,也可以使用init 检查表单提交并使用硬重定向到此URL的操作。使用PHP时,重定向URL应为

echo home_url(\'/Projects/demos/demo-url-rewrite/client/\'.$_POST[\'name\']);
让我知道进展如何!

结束

相关推荐

Beta Versioning of Plugins

当我为一些bug编写修复程序时,我通常会增加版本并将其发送给bug查找程序,以查看我的修复程序是否有效。如果我有1.2.5 我想创建一个测试版,一旦我提交代码,它将变得多余,我应该使用1.2.5-beta 或1.2.6-beta? 我担心的是1.2.6 <;1.2.6-beta 因此,字符串比较可能有利于beta版,而bug查找程序不会收到发布稳定版本的通知。编辑:如果在不考虑发布类型的情况下对字符串进行绝对比较,则可以使用1.2.5-fix 然后1.2.6. 该问题也概述在http://en.wik