web-dev-qa-db-ja.com

私のプラグインカテゴリのSEOフレンドリーURL

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に移動すると

http:// localhost/mydomain/categories/123/

問題は$_REQUEST['cat']が空なのでpage-custom.php内の条件に入らないことです

2
HOY

独自のテンプレートファイルを作成して、そこで作業を進めないのはなぜですか。これが私がやろうとしていることです:

  1. カスタムページテンプレートを作成する
  2. ページ内で必要なプラグインの機能を呼び出す
  3. プラグインのURLをページにリダイレクトする
  4. クエリvarを取得してリクエストを処理する

- ページテンプレート

簡単なカスタムページテンプレートを作成しましょう。これを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;
    }
}

これは例として機能し、独自のテンプレートを作成し、リダイレクトを使用して必要なものに見せることができます。それはあなたのニーズに合うように変更することができ、そして変更する必要がある。

2
Jack Johansson

書き換え規則では、新しい場所がindex.phpから消えることを想定しています。 'index.php?pagename=tisort-tasarla'に変更した場合、そのページ(または投稿)が存在し公開されている限りは機能します。

1
Morgan Estes