it-swarm.com.de

WordPress benutzerdefinierte Schnecke (Endpunkt) und vergleichen Sie alle Links

Ich arbeite an der one i18n funktion. Es wird mit subdir funktionieren. Zum Beispiel: eg.com/hello-world/en

Hierfür unterstütze ich EP_ALL für die WP benutzerdefinierten Endpunkte.

function lang_add_endpoints(){
    add_rewrite_endpoint('en', EP_ALL);
    add_rewrite_endpoint('de', EP_ALL);
} 
add_action('init', 'lang_add_endpoints');

Zum Beispiel:

eg.com/en
eg.com/page/en
eg.com/post(hello-world)/fr
eg.com/10/11/2018/de
and more...

Es ist gut gemacht. Wie kann ich nun "/en/ or /de/ or /any/" hinzufügen und alle WP Links entfernen, wenn die Abfrage "en" enthält?.

Zum Beispiel:

Ich habe COOKIE: (Ich habe eine Idee, die ich gerade für meine Suche sage)

if($_COOKIE['lang'] == 'en') :

<a href="eg.com/example/en" >Example</a>
<a href="eg.com/05/11/2018/en" >Example</a>
<a href="eg.com/category/news/en" >Example</a>

elseif($_COOKIE['lang'] == 'de') :

<a href="eg.com/05/11/2018/de" >Example</a>
<a href="eg.com/tags/computer/de" >Example</a>

endif;
1
l6ls

Alle API-Funktionen, die Links generieren, verfügen über Filter, mit denen Sie die Ausgabe ändern können. Hier ist ein kurzes Beispiel, das die meisten davon abdeckt:

function wpd_endpoint_links( $url ){
    if( isset( $_COOKIE['lang'] ) ){
        $url = $url . $_COOKIE['lang'] . '/';
    }
    return $url;
}
add_filter( 'post_link', 'wpd_endpoint_links' );
add_filter( 'page_link', 'wpd_endpoint_links' );
add_filter( 'post_type_link', 'wpd_endpoint_links' );
add_filter( 'attachment_link', 'wpd_endpoint_links' );
add_filter( 'term_link', 'wpd_endpoint_links' );
add_filter( 'author_link', 'wpd_endpoint_links' );
add_filter( 'post_type_archive_link', 'wpd_endpoint_links' );
add_filter( 'day_link', 'wpd_endpoint_links' );
add_filter( 'month_link', 'wpd_endpoint_links' );
add_filter( 'year_link', 'wpd_endpoint_links' );
1
Milo