2016-04-19 6 views
1

Ich verwende Toolset-Typen und frage mich, wie einfach es ist, die URL so einzurichten, wie ich es möchte.Bessere URL-Formatierung mit benutzerdefinierten Beitragstypen und Taxonomien

Ich habe einen benutzerdefinierten Beitragstyp von Veranstaltungsorten und ich habe eine benutzerdefinierte Kategorie Taxonomie des Standorts.

Derzeit werden die Urls kommen aus wie

http://domain.com/venue/location/manchester/ 
http://domain.com/venue/manchester/the-venue-name/ 

Aber ich möchte das die URL wie

http://domain.com/manchester/ 
http://domain.com/manchester/the-venue-name/ 

strukturiert werden Wo muss ich diese Änderungen vornehmen aussehen?

Ist dies alles .htaccess funktioniert oder kann etwas im Bereich Permalinks getan werden?

Vielen Dank im Voraus

+0

Ich glaube, das ist möglich, obwohl ich im Moment keine genaue Antwort für Sie habe. Sieh dir die Codex-Seite an, falls du es noch nicht getan hast, es könnte nützlich sein: https://codex.wordpress.org/Using_Permalinks – edhurtig

+0

Das ist eine geladene Frage. Ja es ist möglich. Du wirst die rewrite-api benutzen und es ist ... so viel Spaß! http://code.tutsplus.com/tutorials/the-rewrite-api-the-basics--wp-25474 http://code.utsplus.com/articles/the-rewrite-api-post-types- taxonomies - wp-25488 – admcfajn

+0

Überprüfen Sie auch Folgendes und beachten Sie diese Zeile in den Argumenten regist_post_type: array ('slug' => 'prodotto /% brand%', 'mit_front' => false) https: // wordpress. org/support/topic/type-of-taxonomy-zwischen-benutzerdefiniert-post-type-and-post einfügen – admcfajn

Antwort

0

Wenn ich richtig zu verstehen, muss dieser Hack in der Vorlage arbeiten. Zuerst müssen wir die Beitragstyp Name von URLSlug entfernen.

function ft_remove_postType_slug_fromUrl($post_link, $post, $leavename) { 
    if ('venue' != $post->post_type || 'publish' != $post->post_status) { 
     return $post_link; 
    } 
    $post_link = str_replace('/' . $post->post_type . '/', '/', $post_link); 
    return $post_link; 
} 
add_filter('post_type_link', 'ft_remove_postType_slug_fromUrl', 10, 3); 

Aber das wird nicht von allein funktionieren. Wenn Sie diesen Code in Ihren Funktionen.php erhalten, sollten Sie 404 Error bekommen, weil WordPress nur Posts and Pages erwartet, die sich so verhalten.

Also, Sie müssen diese Aktion auch hinzufügen.

function ft_change_parsingRequest($query) { 

    if (! $query->is_main_query() || 2 != count($query->query) || ! isset($query->query['page'])) { 
     return; 
    } 
    if (! empty($query->query['name'])) { 
     $query->set('post_type', array('post', 'venue', 'page')); 
    } 
} 
add_action('pre_get_posts', 'ft_change_parsingRequest'); 

Danach, Sie erneuern/aktualisieren Sie Ihr Typ/permalink Baum Post (Er ruft flush_rewrites denke ich.) Das bedeutet, Re-Update Ihre permalink Einstellungen auf Ihrem Admin-Panel-Bereich.

Oder wenn Sie sehen oder etwas Magie tun möchten, können Sie es aus der Quelle URL überprüfen.

https://core.trac.wordpress.org/browser/tags/4.3/src/wp-includes/post.php#L1454

Diese Line sagt;

Glückliche Kodierung.