BOUNTY EDIT:
以下のようなリンクがあるプラグインがあります。
mydomain.com/wp-content/plugins/myplugin/includes/categories.php?c=9
私はこれらのリンクをもっとSEOに優しくし、このように機能させたいです。
mydomain.com/wp-content/plugins/myplugin/includes/categories/9/
解決した解決策:
プラグインは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からの返事の後にはうまくいかないことを知りました:
内部ルールはindex.phpを指すべきです
そして直接.htaccess
を編集しようとしましたが@ Deadooshkaからの返事の後で立ち往生しました:
WPはindex.phpを通してリクエストを処理するためにphp-server-variablesを使用するので、ルールはその変数を変更しなければなりません。
それで、これを達成する方法は何ですか?
編集:ジャック・ヨハンソンの解決策
下記のように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に移動すると
問題は$_REQUEST['cat']
が空なのでpage-custom.php
内の条件に入らないことです
独自のテンプレートファイルを作成して、そこで作業を進めないのはなぜですか。これが私がやろうとしていることです:
簡単なカスタムページテンプレートを作成しましょう。これをpage-custom.php
と呼びます。このページを使ってプラグインを操作します。
<?php
/**
* Template Name: My Custom Template
*/
// Our function to get the data
if (function_exists('sample_function')) sample_function();
?>
また、バックエンドにページを作成します。スラッグは/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;
}
}
これは例として機能し、独自のテンプレートを作成し、リダイレクトを使用して必要なものに見せることができます。それはあなたのニーズに合うように変更することができ、そして変更する必要がある。
書き換え規則では、新しい場所がindex.php
から消えることを想定しています。 'index.php?pagename=tisort-tasarla'
に変更した場合、そのページ(または投稿)が存在し公開されている限りは機能します。