BOUNTY EDIT :
我有一个插件,它有如下链接:
mydomain。com/wp-content/plugins/myplugin/includes/categories。php?c=9
我希望这些链接对SEO更加友好,并像这样工作:
mydomain。com/wp-content/plugins/myplugin/includes/categories/9/
SOLUTIONS I HAVE TRIED AND FAILED:
该插件使用ajax。我试过使用
add_rewrite_rule
如下所示,我的插件具有以下功能:
add_action( \'init\', \'add_alexes_rules\' );
function add_alexes_rules() {
add_rewrite_rule(\'^categories/([0-9]+)/?$\', \'categories.php?c=$1\', \'top\');
flush_rewrite_rules();
}
并得知在收到
@Milo:
内部规则应指向索引。php
并试图编辑.htaccess
直接但在收到@Deadooshka:
WP使用php服务器变量通过索引处理请求。php,所以规则必须更改该变量。
那么,实现这一目标的方法是什么呢?
EDIT: Jack Johansson\'s SOLUTION
创建了一个php文件:
page-custom.php
具体如下:
<?php
/**
* Template Name: My Custom Template
*/
if (is_page_template( \'page-custom.php\' ) && isset($_REQUEST[\'cat\'])){
...
}
?>
使用创建了一个页面
ID: 281
其中使用
page-custom.php
样板
我的functions.php
:
function my_rewrite_tag() {
add_rewrite_tag(\'%cat%\', \'([^&]+)\');
}
function my_rewrite_rule() {
add_rewrite_rule(\'^categories/([^/]*)/?\',\'index.php?page_id=281&cat=$matches[1]\',\'top\');
}
add_action(\'init\', \'my_rewrite_tag\', 10, 0);
add_action(\'init\', \'my_rewrite_rule\', 10, 0);
现在,当我导航到下面这样的示例url时
http://localhost/mydomain/categories/123/
问题是
$_REQUEST[\'cat\']
是空的,因此不会进入内部状态
page-custom.php
最合适的回答,由SO网友:Johansson 整理而成
我们为什么不创建自己的模板文件,然后在那里做我们的工作呢?下面是我要做的:
创建自定义页面模板调用页面内所需插件的函数将插件URL重定向到页面获取查询变量并处理请求-页面模板让我们创建一个简单的自定义页面模板。我们称之为page-custom.php
. 我们将使用此页面与插件进行交互。
<?php
/**
* Template Name: My Custom Template
*/
// Our function to get the data
if (function_exists(\'sample_function\')) sample_function();
?>
我们还在后端创建一个页面,其slug是
/my-custom-page/
其ID为
123
.
-重写规则现在让我们检查是否在该页面上,并将数据重定向到该页面。
function my_rewrite_tag() {
add_rewrite_tag(\'%cat%\', \'([^&]+)\');
}
function wallpaperinho_subcat_rewrite_rule() {
add_rewrite_rule(\'^categories/([^/]*)/?\',\'index.php?page_id=123&cat=$matches[1]\',\'top\');
}
add_action(\'init\', \'my_rewrite_tag\', 10, 0);
add_action(\'init\', \'my_rewrite_rule\', 10, 0);
这段代码的作用是什么?它检查我们是否正在访问
/categories/321/
并将其重定向到我们的页面。现在我们有了所需的数据。让我们检查一下模板。
-我们检查模板的条件是否启用page-custom.php
并将数据返回到页面。
if (is_page_template( \'templates/about.php\' ) && isset($_REQUEST[\'cat\'])){
function sample_function() {
$c = $_REQUEST[\'cat\'];
// We have the c value, call the internal plugin\'s functions and return its value to the page
return $data;
}
}
例如,创建我们自己的模板并使用重定向使其看起来像我们想要的任何东西。它可以而且需要更改以满足您的需要。