web-dev-qa-db-ja.com

カスタム投稿タイプURLをカスタマイズする

実際には、カスタム投稿タイプのURLの構造を変更する必要があります(分類URLをカスタマイズしますが、混乱を避けるためにこの質問の投稿のみをターゲットにします)。

私のカスタム投稿タイプは、スラッグpropertiesを持つプロパティで、スラッグproperty_categoryを持つ分類「プロパティカテゴリ」を持っています。

要件

現在、カスタム投稿タイプの構造は次のとおりです。https://domain.com/properties/postname

カスタム投稿タイプの場合、カテゴリとサブカテゴリをURLに含め、https://domain.com/property_category/property_sub_category/**/postnameのようにproperties slugを削除します。

プラグイン(カスタム投稿タイプパーマリンク)を使用することで、このURLを取得することができますhttps://domain.com/properties/property_category/property_sub_category/**/postname

お分かりのように、私の上記のURLにはpropertiesが含まれているので、削除する必要があります。そのため、ここまですべてがうまく機能しています。

その後、urlからプロパティを削除し、投稿とページとともに自分のプロパティのカスタム投稿タイプをチェックする機能を追加しました。そのため、私のurlはhttps://domain.com/property_category/sub_category/**/postnameになりますが、壊れて404が返されます。

このURLは機能していますが、私はこれを必要としませんでしたhttps://domain.com/property_postname

私はWordpressのReWrite APIがこの問題を解決することができるけれどもそれに対する実際の解決策を理解することができないと信じます。

この点で任意の助けは大歓迎です。

1
Mehmood Ahmad

私が直面している問題はすでに詳細に説明されています。 wordpress rewrite apiでこの問題を解決できると思いますので、その解決策を見つけました。私の投稿には2つの主なカテゴリーしかありませんので、それらを私のプロパティにマッピングします。なぜなら、私はurlからcustom_post_type nameを削除しているので、urlを識別しマッピングするための何かがあるはずです。

/**
 * Rewriting url
 */
function mak_rewrite_add_rewrites()
{

    // Mapping Property
    add_rewrite_rule(
        '^category_one_name(/[\S]*)+(/[\S]*)$',
        'index.php?property=$matches[2]',
        'top'
    );

    add_rewrite_rule(
        '^category_two_name(/[\S]*)+(/[\S]*)$',
        'index.php?property=$matches[2]',
        'top'
    );
}
add_action('init', 'mak_rewrite_add_rewrites');

$matches[2]は、正規表現の2番目の括弧から値を取得することを表します。

0
Mehmood Ahmad