Generieren Sie Posttitel und Permalink aus dem benutzerdefinierten Feld und dem Veröffentlichungsdatum

Ich habe einen benutzerdefinierten Post-Typ mit der folgenden Permalink-Struktur

/%match_season%/%match_team%/%postname%-%year%-%monthnum%-%day%/ 

% match_season% und% match_team% sind Taxonomien.

Der Post-Typ enthält anstehende Fixtures und vergangene Fixtures, wobei der Post-Titel als Oppositions-Name gesetzt ist, was mir eine nette URL-Struktur gibt. Da die Teamnamen in jeder Saison gleich sind, finde ich, dass WordPress im Permalink einen Wert von -2 zu% postname% hinzufügt.

Ich verstehe die Gründe, warum WordPress eine Nummer am Ende eines Permalinks hinzufügt, wenn es bereits eine Seite / Post mit demselben Slug gibt, aber in meinem Fall berücksichtigt es nicht das einzigartige Datum, das ebenfalls Teil der URL ist .

Ich habe versucht, die Struktur zu ändern

 /%match_season%/%match_team%/%year%-%monthnum%-%day%-%postname%/ 

Aber das gleiche passiert.

Gibt es das überhaupt, um das zu vermeiden? Jede Hilfe wird geschätzt.

AKTUALISIEREN

Ich habe weitere Nachforschungen angestellt und bin auf diesen Beitrag über wp_insert_post_data gestoßen , der mich indirekt zu diesem Beitrag über save_post geführt hat . So habe ich jetzt die folgende function

 function change_title( $post_id ) { // Set variables $opposition = get_field( 'opposition', $post_id ); $match_date_url = get_the_date( 'Ym-d', $post_id ); $match_date_title = get_the_date( 'd/m/y', $post_id ); // Build post title and permalink $post_title = $opposition . ' v Team - ' . $match_date_title; $post_name = $opposition . ' v Team - ' . $match_date_url; // unhook this function so it doesn't loop infinitely remove_action( 'save_post_matches', 'change_title', 10, 3 ); // update the post, which calls save_post again wp_update_post( array( 'ID' => $post_id, 'post_title' => $post_title, 'post_name' => $post_name, ) ); // re-hook this function add_action( 'save_post_matches', 'change_title', 10, 3 ); } add_action( 'save_post_matches', 'change_title', 10, 3 ); 

Was ist fast das, was ich brauche.

Wenn es sich um einen neuen Post handelt, wird das benutzerdefinierte Feld nicht zum Titel oder Slug hinzugefügt, aber der Rest ist. Wenn der Post bei der Aktualisierung existiert, werden Titel und Slug korrekt aktualisiert.

Ist etwas offensichtlich, dass ich vermisse? Wieder wird jede Hilfe geschätzt.

UPDATE 2

Ich denke, ich habe die Lösung. Da der obige Code den benutzerdefinierten Post-Typ von ACF nicht hinzugefügt hat, habe ich mich darum gekümmert und acf / save_post gefunden

Also der Code den ich jetzt habe, scheint sowohl für neue Posts als auch für Updates auf Posts zu funktionieren

 function create_title( $post_id ) { // Set variables $opposition = get_field( 'opposition', $post_id ); $match_date_url = get_the_date( 'Ym-d', $post_id ); $match_date_title = get_the_date( 'd/m/y', $post_id ); // Set post title and permalink $post_title = $opposition . ' v Team - ' . $match_date_title; $post_name = $opposition . ' v Team - ' . $match_date_url; // update the post, which calls save_post again wp_update_post( array( 'ID' => $post_id, 'post_title' => $post_title, 'post_name' => $post_name, ) ); } add_action( 'acf/save_post', 'create_title', 20 ); 

Hoffentlich hilft das jemand anderem.

Solutions Collecting From Web of "Generieren Sie Posttitel und Permalink aus dem benutzerdefinierten Feld und dem Veröffentlichungsdatum"