Heim  >  Fragen und Antworten  >  Hauptteil

So legen Sie den benutzerdefinierten WordPress-Beitragstyp add_rewrite_rule richtig fest

Mein WP-Blog hat einen benutzerdefinierten Beitragstyp namens „rules_and_laws“ und ich habe eine Funktion hinzugefügt, um die Umschreiberegeln festzulegen:

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' );

Die Regel funktioniert für den benutzerdefinierten Beitragstyp „rules_and_law“, das einzige Problem besteht darin, dass jetzt alle anderen Seiten und Beiträge des Blogs 404 zurückgeben.

Ich habe einen anderen Ansatz ausprobiert und versucht, die Umschreibe-URL nur auf cpt „rules_and_laws“ anzuwenden, aber nichts hat funktioniert:

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');

Bei diesem Code werden die Regeln beispielsweise überhaupt nicht angewendet (es sieht so aus, als würde is_singular('rules_and_laws') nicht funktionieren).

Dies ist ein Beispiel für eine Basis-URL:

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

Dies ist die Neufassung:

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

Danke für deine Hilfe.

P粉587970021P粉587970021251 Tage vor336

Antworte allen(1)Ich werde antworten

  • P粉514458863

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

    应解决该问题的代码更新版本:

    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');

    Antwort
    0
  • StornierenAntwort