ホームページ » ワードプレス » WordPressのヒントとプラグインでURLを書き換える

    WordPressのヒントとプラグインでURLを書き換える

    WordPressの最新アップデートにより、開発者は個人のWebサイトをすばやくカスタマイズできます。テーマの領域を更新したり、サイドバーのウィジェットを置き換えたり、独自のカスタムPHPコード関数を作成したりするのは簡単です。広がりは巨大です - そして人気の1つの分野はかなりのURLパーマリンクを書き換えることです.

    デフォルトのWordPress書き換えシステムをアップデートする方法はいくつかあります。このチュートリアルでは、いくつか例を挙げて、プロセスがいかに簡単になるかを説明します。コードの内容を理解するには、PHPについてある程度理解する必要がありますが、自分のテンプレートにコピーして貼り付けるのは簡単なので、ほとんど作業は必要ありません。.

    WP_Rewriteについて

    Apacheサーバのmod_rewriteに精通しているのであれば、WordPressの書き換え構文を理解するでしょう。彼らのシステムはいまだに .htaccess しかし、すべてのルールはPHPでコーディングされています。私達は私達の自身のURLを書くことに対してより多くのコントロールを持っているのでこれは実際にプロセスを少し簡単にします.

    私は$ wp_rewriteクラスページをスキムすることを勧めます。理解しやすくするために参照できる小さな例もあります。ほとんどのコードはあなたのテーマの中に直接書くことができます。 functions.php ファイル。まずWordPressに含まれているデフォルトの書き換えを見てみましょう。.

    $ wp_rewrite-> rulesの内容

    宣言することによって $ wp_rewrite グローバルクラスとして、すべての内部データにアクセスできます。あなたがあなた自身の規則を追加しようとするとき、これらは名前を持つ配列に追加されます。 $ wp_rewrite-> rules. 開発中に何度もデータを参照する必要があるかもしれないので、この変数を覚えておくことは重要です。.

    規則); ?

    このコードブロックを私のテーマに追加しました。 page.php ファイル。それは大きな混乱のように見える大量のデータを出力します。しかし、もしあなたが ソースを見る あなたのページでは、どの書き換えルールがどのファイル名にマッチしているかを見るのは簡単です。たとえば、カテゴリの書き換えの規則を見てみましょう。

    [category /(.+?)/?$] => index.php?category_name = $の一致[1] 

    かっこ内の左側のビットは、検索するApache RewriteRuleです。セクションから /カテゴリー/ その後に任意の文字列が続きます。これが一致すると、サーバーは参照することを認識します。 index.php?category_name = 最後に変数を置き換えながら.

    カスタムパーマリンクの設定

    $ wp_rewriteクラスだけでも検討すべき内容はたくさんあります。以下のような他の多くのプロパティを参照できます。 $ wp_rewrite-> category_base または $ wp_rewrite-> author_base これらのページのデフォルトのURL構造を取得するためのものです。しかしWPのデフォルト設定を引っ張ることとは別に私達は私達自身のルールを構築することができます.

    著者ベースの再構築

    あなたがパーマリンク設定ページに入るとき、あなたはカテゴリとタグベースをリセットするオプションを持っています。ただし、作者ベースをリセットするオプションが奇妙に欠けています.

    でも使えます add_rewrite_rule() WordPressのコーデックスから新しい設定を統合する。この場合私は交換しました /著者//作家/ しかし、あなたは好きなものなら何でも使うことができます。さらに、著者ページとRSSフィードの他のリダイレクトをコピーしました。このコードブロックをテーマのfunctions.phpファイルに追加できます。.

    add_action( 'init'、 'add_author_rules'); function add_author_rules()add_rewrite_rule( "writer /([^ /] +)/?"、 "index.php?author_name = $ matches [1]"、 "top"); add_rewrite_rule( "writer /([^ /] +)/ page /?([0-9] 1、)/?"、)index.php?author_name = $が一致[1]&paged = $が一致[2] "、 "上"); add_rewrite_rule( "作家/([^ /] +)/(フィード| rdf | rss | rss2 |アトム)/?"、 "index.php?author_name = $の一致[1]&feed = $の一致[2]"、 "上"); add_rewrite_rule( "作家/([^ /] +)/フィード/(フィード| rdf | rss | rss2 |アトム)/?"、 "index.php?author_name = $の一致[1]&feed = $の一致[2]" 、 "上");  

    この関数は、$ wp_rewrite変数を使用しなくてもアクセスできます。クラスプロパティを使ったハードコーディングよりも簡単であるため、このメソッドを好む開発者もいます。しかし私はまたこの方法がWordPressのインストールによっては必ずしも信頼できるとは限らないことに気づきました。実際にはあなたの.htaccessをフラッシュした後フックにこれらの規則を追加するための2番目のオプションがあります(下記参照).

    generate_rewrite_rulesを使った作成者ベース

    このメソッドを書くためには、グローバル$ wp_rewriteクラスが必要です。それから私はという名前の新しい変数を設定しました $ new_rules これはデータの連想配列を含みます。以下の私のコード例は、基本的な作者ページセクションに書き換えられただけです.

    function generate_author_rewrite_rules()global $ wp_rewrite; $ new_rules = array( "writer /([^ /] +)/?" => "index.php?author_name ="。$ wp_rewrite-> preg_index(1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    しかし、複数のページとRSSフィードを含めたい場合は、配列を強化することができます。連想配列データをプッシュするPHP関数を作成するという選択肢もありますが、これは少し複雑すぎる場合があります。データブロックをカンマで分割して、配列内の別々のエンティティとして振る舞うこともできます。 functions.phpテーマファイルに書かれた私の更新されたコードをもう一度チェックしてください.

    function generate_author_rewrite_rules()global $ wp_rewrite; $ new_rules = array( "writer /([^ /] +)/?" => "index.php?author_name ="。$ wp_rewrite-> preg_index(1)、 "writer /([^ /] +)/ page /?([0-9] 1、)/? "=>" index.php?author_name = "。$ wp_rewrite-> preg_index(1)。"&paged = "。$ wp_rewrite-> preg_index(2)、 "writer /([^ /] +)/(feed | rdf | rss | rss2 | atom)/?" => "index.php?author_name ="。$ wp_rewrite-> preg_index(1)。 "&feed =" $ wp_rewrite  - > preg_index(2)、 "作家/([^ /] +)/ feed /(feed | rdf | rss | rss2 | atom)/?" => "index.php?author_name ="。$ wp_rewrite- > preg_index(1)。 "&feed ="。$ wp_rewrite-> preg_index(2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    元の書き換えルールをフラッシュするまでは、どちらの方法も機能しないことを忘れないでください。これらの機能を変更するときはいつでもこれをしなければならないでしょう、しかしその後、あなたの新しい規則は無期限に固執するでしょう.

    書き換えルールのフラッシュ

    URL書き換えコードを更新しても、変更はすぐには適用されません。新しいコードが追加されるように、.htaccessリライトルールをフラッシュする必要があります。ただし、すべてのページinitでこれを実行すると、データベースに書き込みを行い、.htaccessファイルをハードリフレッシュするため、非常に無駄が多くなります。.

    より良い方法は、管理者パネルのあなたのパーマリンクページにアクセスし、変更を再保存することです。これは常にflush_rewrite_rulesを呼び出すので、フロントエンドのユーザーがロードの問題を経験することを心配する必要はありません。そして、ページを再保存してシステム内のすべてのルールを更新するのに一度だけかかります。しかし、これでうまくいかない場合は、電話してみることができます。 $ wp_rewrite-> flush_rules();

    WP以外の規則の使用

    の中 $ wp_rewrite クラス私たちは何十ものプロパティにアクセスすることができます。最も重要な選択肢の1つは $ wp_rewrite-> non_wp_rules index.phpファイルにヒットしないリダイレクトの配列を収集します.

    これは実際にはWordPressのプラグイン開発で最もよく使われます。特定のカスタムURLタイプ(たとえば / calendar / 2012年6月/)あなたのウェブサイトのバックエンドに/wp-content/plugins/calendarplug/myscript.php)しかしもちろん、プラグイン以外にも、この連想的なカスタム書き換え規則の使用法があります。私は以下の文脈で優れた例を提供しました.

    テーマファイルを隠す

    これはWordPressのディスカッション掲示板でよく見られる一般的な提案です。理想的には、内部のファイルをいくつか参照したいのです。 / wp-content / themes / mytheme / よりエレガントなURLのフォルダ。ディレクトリ構造を変更するには、これには異なるWordPressの書き換えが必要になることに注意してください。.

    WordPressの内部書き換えシステムは、常にコンテンツを単一のルーティングファイルにプッシュします。デフォルトの場合では、追加のクエリ文字列データと共にindex.phpを使用します。しかし、標準のテンプレートディレクトリを隠すために/ wp-content / themes / mytheme / *)私たちは多くの異なるファイルを表示する必要があるでしょう.

    add_action( 'generate_rewrite_rules'、 'themes_dir_add_rewrites'); function themes_dir_add_rewrites()$ theme_name = next(explode( '/ themes /'、get_stylesheet_directory()));グローバル$ wp_rewrite; $ new_non_wp_rules = array( 'css /(.*)' => 'wp-content / themes /'。$ theme_name。 '/ css / $ 1'、 'js /(.*)' => 'wp-content / themes / '。$ theme_name。' / js / $ 1 '、' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '。$ theme_name。' / images / wordpress-urls-rewrite / $ 1 '、); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    私は新しい機能を書いた themes_dir_add_rewrites() これらの長いURLからすべての主要コンテンツを取り出してバックエンドにリダイレクトするため。 $ wp_rewriteクラスのこの他の不可解なプロパティを使用していることに注意してください。 non_wp_rules. ドキュメントによると、これらはWPのindex.phpファイルには直接関係のないルールであり、サーバー側で処理されます。.

    これらのWP以外の規則の非常に優れている点は、古いURL方式を依然として非常に簡単に管理できることです。あなたが以下にリンクするのを妨げるものは何もありません。

    /wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg.

    あなたが参照することができればしかし、それははるかにきれいに見えます:

    /images/wordpress-urls-rewrite/logo.jpg 代わりに.

    便利なツールとプラグイン

    あなたがあなた自身のかわいいURLをコーディングすることに行き詰まっているなら、あなたが利用できるほんの少しのツールがあります。このプロセスは把握するのが非常に難しいので、あなたが数週間苦労しているならばがっかりしないでください。練習にもっと時間をかけると、内容が簡単になると思います.

    しかし、始めにこれらの便利な書き換えツールとプラグインのいくつかをチェックしてください。おそらくそれらすべてを必要とするわけではありませんが、WPの書き換えを取り巻く大規模な開発者ベースを見つけるのは素晴らしいことです.

    モンキーマンリライトアナライザー

    最初に書き換え規則に飛び込むとき、このプラグインは必須です。それは実際にあなたのウェブサイトのための規則のどれも変えません - それは単にあなたがコードをテストしてどのリダイレクトがどのページに行くのかを見ることを可能にします。それはどんなカスタム投稿タイプのためのカスタムクエリ変数をテストするためにさえ働くでしょう.

    AskApache RewriteRules Viewer

    これは上記のプラグインと似ていますが、あなた自身のルールをテストすることはできません。代わりに、このプラグインはあなたのウェブサイトの全てのデフォルトWPルールとそれらがリダイレクトする場所を表示します。これはのすべての主要な特性を含みます $ wp_rewrite あなたのパーマリンク設定やページ/カテゴリ/タグベースなど.

    WP htaccessコントロール

    ここでは、新しいページのリダイレクトを作成するための異なる一連の規則があります。プラグインには独自の管理パネルがあり、そこであなたの作者ベース、ページベースなどの変数を編集したり、独自のカスタム.htaccessルールを追加することさえできます.

    この方法は、wp_rewriteを使用して独自に構築する方法とは異なります。しかし、Webサーバーを実際に知っていて、.htaccessに直接書くことがより快適であると感じる技術者にとっては、それは簡単かもしれません。.

    書き換えルールテスター

    これは実際にはWordPressのプラグインではありませんが、間違いなくファイルに保存するための便利なツールの1つです。 .htaccessファイルを編集することなく、書き換えルールをコピーしてWebサイトでテストできます。これは、Web上でライブを起動する前に、構文からバグを取り除くのに最適な方法です。.

    DW書き換え

    DW Rewriteはインストール後すぐに3つのユニークでかわいいURLを作成する非常にシンプルなプラグインです。デフォルトでは、admin、login、およびregistrationの各リンクは次のように変更されます。 / admin, /ログイン, そして /登録 それぞれ.

    あなたが複数の作家を特集しているブログのための迅速な修正を必要とするならば、これは素晴らしいことができます。それは特に恥ずかしいことに複雑なWordPress登録リンクを隠します(/wp-login.php?action=register).

    結論

    このチュートリアルがあなたにWordPressの書き換えについて考えさせるためのいくつかの例を提供することを願っています。 CMSは非常に人気があり、開発者はまだ毎日新しい機能を生み出しています。あなた自身のURLをカスタマイズすることは、そのような巨大なユーザベースの機能です。それはあなたのウェブサイトにデフォルトのオプションと比較してそれ自身の独特の存在感とブランドを与える.

    書き換え規則に問題がある場合は、損傷を元に戻すことは決して難しいことではありません。機能コードを削除して.htaccessルールをフラッシュするだけで、何も変わっていないように見えます。あなたがトピックで見つけることができるいくつかの他の同様の記事をチェックするようにしてください。そして、質問やコメントがあれば、ポストディスカッションエリアで私たちと共有することができます。.