web-dev-qa-db-ja.com

分類URLのナメクジを削除する

ただ疑問に思いますが、いくつかのURLからスラッグを削除するにはどうすればいいですか。私は出展者と呼ばれるカスタム投稿タイプと、それらの出展者を定義するための分類法を使用しています(例:おすすめゲスト、出版社など)。

今私はこれを持っています:http://thisurl.com/exhibitor_filters/featured-guests/

私はこれを望みます:http://thisurl.com/featured-guests/

私はWPのリライト/スラグで遊んできましたが、これまでのところサイコロはありません。

提案?

ありがとうございます。

- 編集 -

楽しい時間、今私は everything に対して404個のエラーを受け取っていますが、これにはcustom-post-typesとtaxonomy-termsが含まれます。私は少なくとも最初にそんなに多くのことをやめさせることをやめさせるためにこの事を得ることができるかどうか見るつもりです...あなたの一般的な提案みんなありがとう。

6
Nadine

これはデフォルトでは不可能であり、CPTおよびカスタム税金登録APIを使用することは不可能です。

そして正当な理由のために。

パーマリンクとスラグの衝突、そしてあいまいさの解消がすべてです。確かに、重複しない一意のURLがこの理由でシステムによって許可されていない場合があります(false negative)。

だから私はあなたが'exhibitor_filters''exhibitors'のような'filters'の代わりをすることに決め、そしてそれを登録時の書き換えオプションのスラッグとして使うことを勧めます。

あなたが本当にあなたが望む方法でそれをやりたいならば、あなたは書き換え規則を追加する必要があるでしょう。あなたが衝突の本当の危険を冒して(私たちは'about'というページを見せるか、'about'という用語をロードしますか?)あなたのフックの順序と優先順位が大きな役割を果たすので、これは問題になることがあります。

例えば.

function ex_rewrite( $wp_rewrite ) {

    $feed_rules = array(
        '(.+)'    =>  'index.php?exhibitor_filter='. $wp_rewrite->preg_index(1)
    );

    $wp_rewrite->rules = $wp_rewrite->rules + $feed_rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( 'generate_rewrite_rules', 'ex_rewrite' );

上記のコードは個々の用語で機能しますが、階層的なURLや分類法を変更する必要があります。

テーマのfunctions.php、またはテーマに関連付けられたプラグインにコードを配置します。

警告:パーマリンクが衝突しないように注意する必要があります。また、どの規則が最初に来るかの順序に注意する必要があります。これをテストするには、monkeyman rewrite analyzerプラグインを使用してください。あなたは警告されました。

6
Tom J Nowell

数回クリックするだけで分類スラグを簡単に削除できるプラグインがあります。いずれにせよトムが言ったようにとにかく注意してください、例えば2つの異なる分類法の用語に同じ名前を付けないでください。

プラグインのURLは http://wordpress.org/extend/plugins/wp-htaccess-control/ です。

2
chifliiiii

私はその答えを見つけました ここ そしてJonathan brinleyのコメントにあるコードを使いました。最初に分類法を"exhibitor_filters"、次にCPTを宣言し、スラッグを%exhibitor_filters%に設定します。

アーカイブのリンクという用語を含め、すべてのCPTと用語は問題ありません。私の場合は、CPTスラッグの%taxo%を使用してパーマリンクからCPTスラグを削除しました。また、アーカイブというCPTスラグを表示している場合を除いて、うまくいきました。

"featured-guests"出展者フィルターのすべてのカスタム投稿をフィーチャーしたアーカイブページが必要なようです。

がんばろう。

0
sergio

あなたのパーマリンクセクションからこれを指定できるはずです。あなたはカスタムパーマリンクを通してこれを設定することができます、しかしそれはデフォルトのオプション "ポスト名"の1つがあなたのために働くべきであるように思えます。これは設定の下で見つけることができます、wordpressバックエンドのパーマリンク。

0
Lorenzo W.