Maison  >  Questions et réponses  >  le corps du texte

Comment définir correctement le type de publication personnalisé WordPress add_rewrite_rule

Mon blog wp a un type de publication personnalisé appelé "rules_and_laws" et j'ai ajouté une fonction pour spécifier les règles de réécriture :

function custom_rules_and_laws_permalink_structure() {
     add_rewrite_rule(
         '([^/]+)/?$',
        'index.php?rules_and_laws=$matches[1]',
        'top'
        );
 }
add_action( 'init', 'custom_rules_and_laws_permalink_structure' );

La règle fonctionne pour le type de publication personnalisé "rules_and_law", le seul problème est que désormais toutes les autres pages et publications du blog renvoient 404.

J'ai essayé une autre approche, j'ai essayé d'appliquer l'URL de réécriture uniquement au cpt 'rules_and_laws' mais rien n'a fonctionné :

function custom_rules_and_laws_permalink_structure() {
    // Check if the current post type is 'rules_and_laws'
    if (is_singular('rules_and_laws')) {
        add_rewrite_rule(
            '([^/]+)/?$',
            'index.php?rules_and_laws=$matches[1]',
            'top'
        );
        flush_rewrite_rules(); // Flush the rewrite rules to apply the changes
    }
}
add_action('init', 'custom_rules_and_laws_permalink_structure');

Par exemple, avec ce code, les règles ne sont pas appliquées du tout (il semble que is_singular('rules_and_laws') ne fonctionne pas).

Voici un exemple d'URL de base :

https://website.com?rules_and_laws=art-4-security-regulation

Voici la réécriture :

https://website.com/art-4-security-regulation

Merci pour votre aide.

P粉587970021P粉587970021300 Il y a quelques jours386

répondre à tous(1)je répondrai

  • P粉514458863

    P粉5144588632024-01-17 11:43:14

    Version mise à jour du code qui devrait résoudre ce problème :

    function custom_rules_and_laws_permalink_structure() {
        // Register the rewrite rule only for the 'rules_and_laws' post type
        add_rewrite_rule(
            '^rules_and_laws/([^/]+)/?$',
            'index.php?rules_and_laws=$matches[1]',
            'top'
        );
    
        // Flush the rewrite rules to apply the changes
        flush_rewrite_rules();
    }
    add_action('init', 'custom_rules_and_laws_permalink_structure');

    répondre
    0
  • Annulerrépondre