web-dev-qa-db-fra.com

Personnaliser l'URL du type de message personnalisé

En fait, je dois modifier la structure de mes URL pour le type de publication personnalisé (je souhaite également personnaliser l'URL de la taxonomie, mais uniquement en ciblant la publication pour cette question afin d'éviter toute confusion).

Mon type de message personnalisé est Propriété avec slug properties et sa taxonomie est 'Catégorie de propriété' avec slug property_category

Exigence

Actuellement, la structure du type de message personnalisé est la suivante: https://domain.com/properties/postname

Pour le type de message personnalisé, je souhaite inclure des catégories et des sous-catégories dans l'URL et supprimer properties slug like https://domain.com/property_category/property_sub_category/**/postname.

En utilisant le plugin (Custom Post Type Permalinks), je peux obtenir cette URL https://domain.com/properties/property_category/property_sub_category/**/postname

Comme vous voyez que mon URL ci-dessus contient properties et que je dois l'enlever afin que tout fonctionne bien jusqu'à maintenant pour moi.

Après cela, j'ai supprimé les propriétés de l'URL et ajouté une fonction permettant de vérifier le type de publication personnalisé de ma propriété, ainsi que les publications et les pages, de sorte que mon URL devienne https://domain.com/property_category/sub_category/**/postname, mais elle est cassée, cela veut dire qu'elle me donne 404.

Cette URL fonctionne mais je n'ai pas besoin de celle-ci https://domain.com/property_postname

Je pense que Wordpress ReWrite API peut résoudre ce problème mais je suis incapable de trouver la solution à ce problème.

Toute aide à cet égard sera grandement appréciée.

1
Mehmood Ahmad

Les problèmes que je rencontre sont déjà décrits en détail. Comme je suppose que cette api wordpress rewrite peut résoudre ce problème, j'ai donc trouvé cette solution. Comme je n’ai que deux catégories principales pour mes publications, je les mappe sur mes propriétés, car comme je supprime le nom custom_post_type de l’URL, il doit donc y avoir quelque chose à identifier et à mapper l’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] représente l'obtention de la valeur de la deuxième parenthèse dans une expression régulière.

0
Mehmood Ahmad