web-dev-qa-db-ja.com

を使用して分類ベースを削除する WP リライト

次のURL構造を作成しようとしています。

example.com/attractions                     <-- post type archive
example.com/attractions/taxonomy_term       <-- taxonomy archive
example.com/attractions/van-gogh-museum     <-- custom post type

残念ながら、これはデフォルトでは不可能です。SEユーザーsanchothefatが この質問に答えて書いたように、WordPressはURLに分類基準を必要とします

... taxonomy-slugをそこに配置したくない場合は不運ですどの分類学から、投稿は何ですか。

言い換えれば、WordPressはこのパーマリンク構造を必要とします:

example.com/attractions/taxonomy_base/taxonomy_term

私の質問: WordPress書き換えAPIを使ってこれを機能させる方法はありますか?

私はそれが2つのステップを含むと思います:

  1. URLからの分類基準の削除
  2. WordPressにどの投稿タイプを表示する必要があるかを伝える

更新#1

URLから分類基準を削除するコードスニペットを見つけました。

global $wp_rewrite;
$wp_rewrite->extra_permastructs['taxonomy_base'] = array('%taxonomy_base%', EP_NONE);

情報源 - ページ下部の最後の答えを参照)

WordPressはポストが分類アーカイブかポストタイプかを見分けることができないので、しかしこれは完全な解決策ではありません...


更新#2

この著者の すばらしい記事 on プリティURLを使用したAdvanced Taxonomy Queries

あなたが求めていることはそれほど難しくありませんが、それは少しトリッキーかもしれません。書き換え規則では、2番目の用語がどんな種類のものであるかを知る必要があります。そのように書き直すことができます / Attraction /の後のはすべて分類法のURLとして扱われますが、両方を行うのは少し面倒です。


更新#3

同じ問題を抱えている人のために、 この議論 / WordPress Answersを見てください。特にMikeSchinkelのプラグインコードが役に立つかもしれません。

これは、分類基準とURLの用語を組み合わせたWPCandyの興味深い例です。http://wpcandy.com/pros/experienced/with-multisite

4
Mattvic

最近私は同じ状況に出くわしました、そして、解決策を探すのに費やしても見つからなかったので、私は自分自身で working solutionを書きました。

秘訣はWordpressのwp_rewriteを使うこと、そしてWordpressが最初にパーマリンクを生成するときにあなたのURLをそれに追加することです。

私はすべてを自動的に行うための簡単な関数を書き、私のブログですべてを説明しました(同じコードを2回貼り付けたくない)ので、ぜひチェックしてください;)

http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/

1
Some Web Guy

カスタム分類法とデフォルトの分類法のスラッグベースを削除するプラグインをWordpressディレクトリに追加しました。あなたはそれをここで見つけることができます - http://wordpress.org/extend/plugins/wp-no-taxonomy-base/ /

1