Mit diesem kleinen links Code kann man die Permalink Struktur für Projekte anpassen.
Anstatt des Wortes ‘project’ kann jetzt alles Mögliche gewählt werden… Zu Beispiel ‘fotos’ oder ‘produkte’. Die URL des Projekte ändert sich dann in ‘/fotos/mein-projekt/’ oder ‘/produkte/mein-projekt’. Je nachdem, was man eingetragen hat. Dies kann für Suchmaschinen durchaus relevant sein.
Diesen kopiert man einfach in die functions.php seines Child Themes und lädt Sie auf den Server. Dann sollte mann unter Einstellungen – > Permalinks einmal speichern und schon ist die URL der Projekte angepasst. Es kann jedoch nur ein slug gewählt werden!
<?php
function custom_post_name () {
return array(
‘feeds’ => true,
‘slug’ => ‘project’,
‘with_front’ => false,
);
}
add_filter( ‘et_project_posttype_rewrite_args’, ‘custom_post_name’ );
?>
The short version:
If the above method sounds like too much work, the easier method is to simply make this change in the Divi theme.
Locate the functions.php file in /themes/Divi/
Near line 285 you should see this line:
‘slug’ => ‘projects’,
Change projects to whatever you would like the new slug to be and save the file. If you update Divi in the future, you will have to make this change again because it will almost certainly be overwritten by the update.
* As others have pointed out in the comments, you may have to go to Settings->Permalinks and click on the save changes button for the slug to change.
Follow the steps for modifying the Project Permalink:
- Go to Appearance>>Editor>>functions.php
- In the below code please replace the slug with the desired slug.
- Add the code given below in the functions.php file.
1 2 3 4 5
add_filter( 'et_project_posttype_rewrite_args', 'wpc_projects_slug', 10, 2 ); function wpc_projects_slug( $slug ) { $slug = array( 'slug' => 'Place the Slug for Project' ); return $slug; }
- Then go to settings>>Open Permalinks Section. Here simply click on Save Changes.
Now we can see that the permalink of the project is changed and the word “project” is been replaced by “Service”.
We hope you like this post and please write us for any other questions and suggestion.
Ändern des Slugs für ein Projekt in Divi.
1 2 3 4 | /* at the end of your functions.php */add_filter( 'et_project_posttype_rewrite_args', function() { return [ 'feeds' => true, 'slug' => '**referenz**', 'with_front' => false ]; }); |
Die oft daneben gestellte Frage ist:
„Wie kann ich dann den Projekt-Kategorie-Slug ändern?“
Hier die Antwort:
1 2 3 4 5 6 7 | /* at the end of your functions.php */add_filter( 'register_taxonomy_args', function($args, $taxonomy, $array_object_type) { if ($taxonomy == "project_category") { $args['rewrite']['slug']="**referenzen**"; } return $args;}, 10, 3); |
Bitte dann Permalink-Struktur in den Settings speichern! Es muss nichts verändert werden, nur speichern. Dann werden die Routen neu berechnet.
Warum schreibe ich dazu jetzt einen Post? Steht ja sicher wo im Netz?
Nicht wirklich, und weil ich dir gern zeigen will wie man sowas selber finden kann wenn du es nicht im Netz findest. Ich stell mir nämlich oft die Frage:
Wie kommt man auf sowas?
Das ist das Schöne an offenen Sourcen, man kann alles nachlesen!
Öffnest du die Kategorien erkennst du im Browser am URL /wp-admin/edit-tags.php?taxonomy=project_category&post_type=project, dass es sich um eine custom taxonomy handelt. Vor Divi war die nicht da, also muss sie irgendwo im Template installiert werden.
Also durchsuchst du den Source von Divi nach genau diesem String und findest die entsprechende Zeile
1 2 3 4 | grep -ri project_category wp-content/themes/Divi/# ...#wp-content/themes/Divi/includes/builder/core.php: register_taxonomy( 'project_category', array( 'project' ), array(# ... |
Dann schaust du dir den Source dort an
1 2 3 4 5 6 7 | register_taxonomy( 'project_category', array( 'project' ), array('hierarchical' => true,'labels' => $labels,'show_ui' => true,'show_admin_column' => true,'query_var' => true,) ); |
Hier fällt dir auf, dass es keinen eigenen Filter, wie es bei dem Slug der einzelnen Projekte, gibt. Dort gibt es in Divi den et_project_posttype_rewrite_args Filter, den du gesondert für genau den Fall hernehmen kannst.
Jetzt könntest du sagen,
gut, ich kann jetzt nach „how to change taxonomy slug“ oder sowas suchen…
Aber wenn du schon im Source bist, schaust du gleich ob du noch mehr Informationen rausholen kannst. Nur Leute die sich auch für den Hintergrund interessieren, können auch mit einem System gut umgehen. Deswegen könnte ich auch nicht in jeder Programmiersprache und jedem Framework ein Profi sein – das wäre viel zu viel Information.
Also suchst du jetzt nach dieser register_taxonomy Funktion
1 2 | grep -rni 'function register_taxonomy' .#./wp-includes/taxonomy.php:371:function register_taxonomy( $taxonomy, $object_type, $args = array() ) { |
In der Funktion steht dann
1 2 | $taxonomy_object = new WP_Taxonomy( $taxonomy, $object_type, $args );$taxonomy_object->add_rewrite_rules(); |
Also muss das Rewrite diese WP_Taxonomy Klasse übernehmen. Weiter geht die Suche
1 2 | grep -rni 'class WP_Taxonomy' .#./wp-includes/class-wp-taxonomy.php:15:final class WP_Taxonomy { |
In der add_rewrite_rule Funktion steht dann irgendwas mit
1 | add_permastruct( $this->name, "{$this->rewrite['slug']}/%$this->name%", $this->rewrite ); |
Das schaut gut aus. Die Variable $this->rewrite[’slug‘] muss irgendwo befüllt werden, meistens in der __construct Funktion der Klasse.
Und dort findest du auch den Verweis auf eine set_props Funktion, die gleich darunter diese Rewrite-Variable befüllt.
Die einfachste Möglichkeit, wie du hier hier eingreifen kannst, ist die folgende Zeile
1 | $args = apply_filters( 'register_taxonomy_args', $args, $this->name, (array) $object_type ); |
Weiter unten in der Funktion siehst du, dass der Slug für das Rewrite mit dem Namen der Taxonomie befüllt wird, wenn kein anderer gesetzt wird (was in unserem Fall so ist)
1 2 3 4 5 6 7 8 9 10 | if ( false !== $args['rewrite'] && ( is_admin() || '' != get_option( 'permalink_structure' ) ) ) { $args['rewrite'] = wp_parse_args( $args['rewrite'], array( 'with_front' => true, 'hierarchical' => false, 'ep_mask' => EP_NONE, ) ); if ( empty( $args['rewrite']['slug'] ) ) { $args['rewrite']['slug'] = sanitize_title_with_dashes( $this->name ); }} |
Also musst du in dem register_taxonomy_args Filter diese Variable setzen und zwar nur für die entsprechende Taxonomie.
Das ist das Ergebnis des ganz oben angeführten Source-Snippets.
War doch gar nicht so schwer und geht oft schneller als googeln – außer man weiß, wonach man sucht!


