パーマリンクでadd_query_argを使用してきれいなURLを取得する方法


8

add_query_arg()、それはいいですURLにパラメータを追加し、それが書き換えルールを作成することも容易であるします。ここまでは順調ですね。しかし問題は、ワードプレスによって行われるURLの置換です。

次のようなURLがある場合:

www.mysite.com/?page_id=1&myvar=test

パーマリンクがアクティブになっているブラウザーのアドレス行にこのURLを入力します。このリンクは次のようになります。

www.example.com/pagename/?myvar=test

しかし:私が得たいのは:

www.example.com/pagename/test

最後に、次のようなコードを使用したいと思います。

<a href="<?php add_query_arg( 'myvar', 'test', get_permalink() ) ?>"> .... </a>

その結果:

www.example.com/pagename/test

どうすればこれを達成できますか?文書を読むのに何時間も費やしましたが、解決策が見つかりませんでした。


1
これがどのように行われるのか知りたいのですが。質問に+1します。
henrywright 2013

回答:


5

ちょうど同じ状況に直面し、グーグルしながらこの質問に出くわしました。

これは不可能のようです。かなりのパーマリンクが有効になっている場合、コア自体がURLに文字列を追加するだけです。https: //core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/link-template.php#L571を参照してください。

これに興味がある人のために:あなたはあなたのコードでこのようなことをすることができます:

if ( '' != get_option('permalink_structure') ) {
    // using pretty permalinks, append to url
    $read = user_trailingslashit( get_permalink() . 'test' ); // www.example.com/pagename/test
  } else {
    $read = add_query_arg( 'test', '', get_permalink() ); // www.example.com/pagename/?test
  }

このソリューションは、Jon Caveによる公式makeブログのコメントでも推奨されています。https//make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/#comment-686


0

WordPressでは、これを簡単に行うことはできません。実際、書き換えルールはWordPressでこの種のことを実現するための唯一のオプションであり、プラグインとテーマ(およびあなたも)が(マルチ)サイトのインストール。

@swissspidyソリューションは、キー(myvar)の書き換えルールがすでにあり、最初の条件でパーマリンクを使用していて、それらの条件がない場合に従来のクエリ文字列にフォールバックする場合に機能します。@Johnathan Joostenソリューションは、WordPressで書き換えルールが非常に非常に複雑になる可能性があることを示しています(すべてのクエリ文字列のキーと値に対してそれを行うことを想像してください...)

以前にクライアント向けにいくつかの中規模プロジェクトに取り組んでいたときに、この問題に何度か遭遇し、Obfusquerと呼ばれるプラグインを使用して同様のことを達成することができました。ウェブサイトによると、すべてのWordPressクエリ文字列をユーザー定義の秘密鍵でマスクし、高度なカスタム要件のフックも提供します。

おかしいが、それはWordPressのプラグインリポジトリに記載されている、と私はあなたがたが(私は1つのライセンスでもマルチサイトインストールで動作しますので、本当に手頃な価格だと思います)のサブスクリプションが必要になります考えていませんここにリンクされますが、マスクする必要がある場合は、それにはWordPressインストールの/ hideクエリ文字列。ここにもドキュメントがあります

現在、ほとんどすべてのワードプレスプロジェクトでプラグインを使用しています。それがあなたのニーズに役立つことを願っています。乾杯。


-1

Wordpressソリューションは、次のようなものにするために書き換えルールを追加することです:

    add_action( 'init', 'my_rewrite_add_rewrites' );
    function my_rewrite_add_rewrites()
    {
        add_rewrite_rule( 'calendar/([0-9]{4})/?$', 'index.php?post_type=events&year=$matches[1]', 'top' );
        add_rewrite_rule( 'calendar/([0-9]{4})/page/?([0-9]{1,})/?$', 'index.php?post_type=events&year=$matches[1]&paged=$matches[2]', 'top' );
    }

続きを読む:https : //codex.wordpress.org/Rewrite_API/add_rewrite_rule


1
反対票を投じるのがもっと複​​雑になったはずです...
Vishal Kumar Sahu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.