preview_post_link für benutzerdefinierte Beitragstypen

Ich habe einen benutzerdefinierten Post-Typ, und ich würde gerne in der Lage sein, den Vorschau-Link zu ändern, aber von dem, was ich sagen kann, wirkt sich der Hook für preview_post_link nur auf den Standard-Post-Typ aus.

Irgendeine Anleitung?

Hier ist, was ich versucht habe.

add_filter( 'preview_post_link', 'append_preview_query_vars' ); function append_preview_query_vars( $link, $post ) { if( $post->post_type === "2016program" ) { return $link . "?program_year=2016"; } else { return $link; } } 

Solutions Collecting From Web of "preview_post_link für benutzerdefinierte Beitragstypen"

Zwei Probleme hier:

# 1

Sie vermissen das Argument $accepted_args in:

 add_filter( $tag, $callback_function, $priority, $accepted_args ); 

Weitere Informationen hierzu finden Sie im Codex .

# 2

Beachten Sie, dass $link . "?program_year=2016" $link . "?program_year=2016" ist problematisch, da es uns diese Art von Link gibt:

  /?p=123&preview=true?program_year=2016 

Aber mit add_query_arg( [ 'program_year' => '2016' ], $link ) wir die korrekte Form:

 /?p=123&preview=true&program_year=2016 

Aktualisiertes Code-Snippet:

Bitte versuchen Sie es stattdessen (PHP 5.4+):

 add_filter( 'preview_post_link', function ( $link, \WP_Post $post ) { return '2016program' === $post->post_type ? add_query_arg( [ 'program_year' => '2016' ], $link ) : $link; }, 10, 2 ); // Notice the number of arguments is 2 for $link and $post 

Wir verwenden add_query_arg() , um den zusätzlichen GET-Parameter an den Link anzuhängen.

@ Birgires Lösung ausprobieren. Ist es für WordPress 4.x gültig?

Ich kann keine fot eh preview_post_link oder preview_page_link Filter hinzufügen. Die function jsut wird nicht getroffen.

 function bitflower_change_post_link($link, $post) { //replace www part with server1 using the following php function //preg_replace ( patter, replace, subject ) syntax // $link = preg_replace('/cms/', '', $link); $link = $link . '?testttttt=1'; return $link; } add_filter('preview_post_link', 'bitflower_change_post_link', 10, 2); 

Ich habe es mit den 10,2 Parametern versucht und ohne. Ich habe eine Zeichenfolge in eine Datei geschrieben, um zu sehen, ob der Filter getroffen wird. Kein Glück.

Die offizielle Codereferenz von WordPress listet zumindest den Filter preview_post_link auf.

Irgendwelche Ideen?

PS: wollte kommentieren, aber nicht genug Ansehen haben.