it-swarm.com.de

Fügen Sie dem Standard-Seiten-Permalink ein bestimmtes Word hinzu

Im Moment arbeite ich an einem Projekt meines Kunden. Alles dreht sich um die Amazon-Produktanzeige. Mein Kunde möchte, dass ich die Permalinks aller Posts, Seiten, Suchergebnisse, Archivseiten, Kategorieseiten und aller benutzerdefinierten Postseiten ändere.

Ich bin sehr neu in Rewrite API. Ich habe die Dokumentation zum WordPress-Codex hier gelesen https://codex.wordpress.org/Function_Reference/WP_Rewrite und hier https://codex.wordpress.org/Rewrite_API sowie auf der internen Aber ich kann die Dinge nicht klarstellen.

Kann mir jemand helfen, benutzerdefinierte Permalinks für meine Seiten zu generieren?

Im Moment sieht die Seiten-URL so aus: http://mysite.com/?page_id=2 wenn der Standard-Permalink und http://mysite.com/ Beispielseite/ wenn ihr Postname Permalink .

Ich möchte, dass die URL der Seite wie folgt aussieht http://meinesite.com/info/sample-page .

Hier ist info statisches Wort, das ich meiner Seiten-URL hinzufügen möchte.

Wie kann ich das erreichen? Kann mir jemand in dieser Situation helfen? Ich habe bereits meine 2 Tage in dieser Ausgabe verschwendet und ich bin sicher, es ist wirklich einfach für denjenigen, der bereits damit gearbeitet hat.

Schnelle Hilfe sehr geschätzt.

Danke, Aezaz

2
Shaikh Aezaz

Es gibt vielleicht bessere Möglichkeiten, Filter oder Apache/Nginx-Umschreibungen zu verwenden, aber hier sind zwei Ideen, die aus Sicht der Administrator-Benutzeroberfläche zu berücksichtigen sind (ungetestet):

Idee 1:

Sie können jederzeit /wp-admin/options-general.php aufrufen, um die URL der Website zu ändern:

siteurl

aber ich glaube nicht, dass Sie danach suchen, da dies auch die Home-URL ändern wird.

Idee 2:

Sie können daher /wp-admin/options-permalink.php besuchen und Folgendes versuchen:

rewrite

beginnen mit.

Idee 3:

In Bezug auf die Seiten könnten Sie versuchen, eine übergeordnete Seite mit dem Slug info zu erstellen.

-

Dies wird nicht alles abdecken, was Sie erwähnt haben, aber dies wird Ihnen hoffentlich auf dem Weg helfen.

Aktualisieren:

Hier ist etwas, das Sie weiter erforschen könnten (ich bin mir nicht sicher, ob das überhaupt funktioniert):

add_filter( 'rewrite_rules_array', 'my_rewrites' );

function my_rewrites( $rules )
{
    $newrules = array();
    foreach ( $rules as $rule => $rewrite )
    {
        if( '(' !==  substr( $rule, 0, 1 ) )
            $rule = 'info/' . $rule;

        unset( $rules[$rule] );
        $newrules[$rule] = $rules[$rule];
    }
    return $newrules;
}

Sie müssen die Umschreiberegeln leeren, aber Sie müssen auch die Links durch die Filter ändern: post_link, term_link, page_link, tag_link, date_link, ... usw.

Sie könnten also Folgendes ausprobieren:

// expand this to your needs, but there most be a single filter available instead?
$items = array( 'post', 'page', 'date', 'tag', 'term', 'year', 'month' ); 

foreach( $items as $item )
{
    add_filter( $item . '_link', 'my_link', 99, 2 );
}

function my_link( $permalink, $post ) 
{
   $permalink = str_replace( get_site_url(), get_site_url() . '/info',  $permalink );
    return $permalink;
}

Ich denke, es gibt bessere Hooks und einfach bessere Möglichkeiten, es zu versuchen?

Dies ist genau das, was zuerst in den Sinn kommt, also bitte überprüfen und ändern ;-)

1
birgire