webentwicklung-frage-antwort-db.com.de

Wordpress URL schreiben Regex

Ich habe Probleme beim Versuch zu lernen, wie diese URL in eine reguläre Ausdrucksvorlage geschrieben wird, um sie als Umschreibung hinzuzufügen. Ich habe verschiedene Regex-Sandkästen ausprobiert, um es selbst herauszufinden, aber sie lassen ein '/' nicht zu, wenn ich zum Testen einen Ausdruck von hier kopiere:  enter image description here 

Ich habe einen benutzerdefinierten Beitragstyp (Veröffentlichungen) mit 2 Taxonomien (Magazin, Ausgabe), für den ich eine gut aussehende URL erstellen möchte.

Nach vielen Stunden bin ich hierher gekommen, um herauszufinden, wie ich das umsetzen kann

index.php?post_type=publications&magazine=test-mag&issue=2016-aug

zu einem regulären Ausdruck ( Publikation , Magazin und Ausgabe sind konstant), der ausgegeben werden kann

http://example.com/test-mag/2016-aug/

und hoffentlich mit Raum zu erweitern, wenn ein Artikel von dieser Seite durch verfolgt wird.

Danke im Voraus.

3
4t0m1c

Aus den WordPress-Dokumentationen - https://codex.wordpress.org/Using_Permalinks

Verwenden von% category% mit mehreren Kategorien in einem Beitrag

Wenn Sie einem Beitrag mehrere Kategorien zuweisen, kann nur eine im Permalink angezeigt werden. Die Kategorien sind alphabetisch sortiert. In jeder Gruppe von Unterkategorien ist die Reihenfolge auch alphabetisch. (siehe Kategorien verwalten). Der Beitrag ist weiterhin wie gewohnt über alle Kategorien zugänglich.

Sie können jedoch erreichen, was Sie möchten, indem Sie eine Seite mit der Zeichenfolge listpublications erstellen und den folgenden Code hinzufügen:

add_action('init', 'rewrite');
add_filter('query_vars', 'query_vars');

function rewrite(){
    add_rewrite_rule('listpublications/([^/]+)/([^/]+)/?$', 'index.php?pagename=listpublications&magazine=$matches[1]&issue=$matches[2]','top');
}

function query_vars($query_vars) {
    $query_vars[] = 'magazine';
    $query_vars[] = 'issue';
    return $query_vars;
}

Gehen Sie nun zu Einstellungen -> Permalinks und klicken Sie auf Speichern. Dadurch werden die neuen Umschreiberegeln hinzugefügt. Dies ist also sehr wichtig .

Erstellen Sie nun eine Vorlagendatei in Ihrem Themenordner mit dem Namen page-listpublications.php und fügen Sie den folgenden Code zwischen Fußzeile und Kopfzeile ein.

 global $wp_query;

    $query_args = array(
    // show all posts matching this query
        'posts_per_page'    =>   -1,
    // show the 'publications' custom post type
        'post_type'         =>   'publications',
        // query for you custom taxonomy stuff
        'taq_query' => array(
            array(
                'taxonomy'  =>   'magazine',
                'field'     =>   'slug',
                'terms'     =>   $wp_query->query_vars['magazine']
                ),
            array(
                'taxonomy'  =>   'issue',
                'field'     =>   'slug',
                'terms'     =>   $wp_query->query_vars['issue']
                )
            )

        );

   //fetch results from DB
    $query = new WP_Query( $query_args );

    if ($query->have_posts()):  while ($query->have_posts()): $query->the_post(); 
     // do something sweet with the results
    the_content();

Der Besuch von www.yourdomain.com/listpublications/test-mag/2016-aug sollte Ihnen alle Veröffentlichungen im Testmagazin und in der Ausgabe 2016-Aug geben.

Hoffe das hilft :)

1
Florian