web-dev-qa-db-ja.com

カスタム投稿タイプとカスタム分類法によるパーマリンクの書き換え

簡単なことだと思います。

私が持っている:

  1. カスタム投稿の種類: 食べ物
  2. カスタム分類法(食品に登録): 果物
  3. フルーツ アップル オレンジ チェリー

example.com/food?fruits=Apple、Cherry と入力すると、 Fruits Apple Cherry のすべての投稿が表示されます。 、 それは素晴らしいことです!

ただし、 example.com/food/fruits/Apple,Cherry または example.com/food/Apple,Cherry と入力してください。同じ結果です。

カスタム投稿に関連したさまざまなパーマリンクとプラグインのプラグインを試してみましたが、役に立ちませんでした。

ありがとうございました、

ダビデ

3
dee

フィルタpost_linkpost_type_linkを使ってリンク構造を構築する必要があります。

add_filter('post_link', 'territorio_permalink', 10, 3);
add_filter('post_type_link', 'territorio_permalink', 10, 3);

function territorio_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%territorio%') === FALSE) return $permalink;

// Get post
$post = get_post($post_id);
if (!$post) return $permalink;

// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'territorio','orderby=term_order');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
$taxonomy_slug = $terms[0]->slug.'/'.$terms[1]->slug; //build here
else $taxonomy_slug = 'not-yet';

return str_replace('%territorio%', $taxonomy_slug, $permalink);
}

ここでhotelは投稿タイプで、territorioは階層的分類法です。

投稿タイプの作成に使用します。

'rewrite' => array( 'slug' => 'anything-you-want/%territorio%','with_front' => false),

注意:より深いリンクが必要な場合は、ビルドをより深くする必要があります。

$taxonomy_slug = $terms[0]->slug.'/'.$terms[1]->slug.'/'.$terms[2]->slug;
3
Diana