it-swarm.com.de

"Page-a" Slug zum Kategorielink hinzufügen, wenn Benutzer den Kategorielink von "page-a" besuchen

Ich habe folgende Bereichsseiten:

http://www.example.com/area1

http://www.example.com/area2

Auf jeder Bereichsseite werden in allgemeinen WP-Menüs Kategorien angezeigt. Um zu zeigen:

Menüpunkte:

-> Kategorie1

-> Kategorie2

Ich habe meine Permalink-Einstellungen wie folgt festgelegt:

Benutzerdefinierte Struktur: http://www.example.com/artiklar/%post_id%

Meine Kategorie-URL lautet also vorerst:

http://www.example.com/artiklar/category/category1

Aber meine Anforderungen sind, wenn Benutzer Kategorieseite besuchen, angenommen Kategorie1 von Bereichsseite sagen Bereich1 dann sieht die Kategorie URL wie folgt aus:

http://www.example.com/artiklar/category/category1?tag=area1

Und wenn das Kategoriemenü von Bereich 2 aus besucht wird, sollte es sein:

http://www.example.com/artiklar/category/category1?tag=area2

Bitte schlagen Sie vor, dass ich bei der Suche im Internet keine Ahnung habe, wie diese Art von Struktur implementiert werden kann.

EDIT:

Der Versuch, klarer zu machen, dass ich einen Teil der Seite an eine Kategorie-URL anhängen möchte (Seite, von der aus der Benutzer den Kategorielink besucht, der Teil dieser Seite wird am Ende der URL zur Kategorie-URL hinzugefügt)

1
jas

Sie möchten den Kategorielink filtern, um die benutzerdefinierte Variable zum Kategorielink hinzuzufügen. Sie können den Filter get_term_link verwenden, um die Kategorielinkadresse zu filtern

Hier ist eine sehr grundlegende Idee:

Nehmen wir an, Sie müssen die benutzerdefinierte Variable nur zu Begriffen hinzufügen, die zur eingebauten Taxonomie category gehören, und zwar nur dann, wenn wir uns auf einer realen Seite befinden und die Seiten-ID als Wert zur URL hinzufügen möchten. Wir können eine Filterfunktion erstellen, um genau das zu tun, und mit add_query_arg() können wir eine neue Abfragevariable hinzufügen (nennen wir sie frompage) URL.

Hier ist eine Grundfunktion, die Sie erweitern und nach Belieben ändern können. Ich habe den Code kommentiert, um das Verfolgen zu vereinfachen

add_filter( 'term_link', function ( $termlink, $term, $taxonomy )
{
    // If this is not a page, return the unmodified term link
    if ( !is_page() ) // Change this to what is specific to your needs
        return $termlink;

    // Only target the build in taxonomy 'category'
    if ( $taxonomy !== 'category' ) // Adjust to your exact taxonomy
        return $termlink;

    // Get the current viewed paged id
    $current_id = get_queried_object_id();

    // Make sure we actually have a value, if not, return the term link
    if ( $current_id == 0 )
        return $termlink;

    // If we reached this point, we are good to go and should add our query var to the URL
    $termlink = esc_url( add_query_arg( ['frompage' => $current_id], $termlink ) );

    return  $termlink;
}, 10, 3 );

Sie können den Wert dann wie folgt abrufen:

$value = filter_input( INPUT_GET, 'frompage', FILTER_VALIDATE_INT ); 
if ( $value )
    echo $value;

Beachten Sie, dass ich hier filter_input verwendet habe, um den $_GET-Wert abzurufen. Dies liegt daran, dass filter_input überprüft, ob der übergebene Wert vorhanden ist, und ihn entweder zurückgibt oder false zurückgibt. Sie können auch einen Filter für den Wert übergeben, in diesem Fall FILTER_VALIDATE_INT. Alles in allem ist es viel besser und sicherer als $_GET( 'frompage) `

1
Pieter Goosen