Ich habe versucht, Filter oder einen Hook zu finden, um den von dieser Funktion zurückgegebenen Link zu ändern
Ich habe den größten Teil der Dokumentation durchgesehen. Ich bin nicht sicher, ob es nicht da ist oder ob ich es nicht finden kann.
Anregungen wäre sehr dankbar.
Der Filter ist post_type_archive_link
, definiert (WP 4.1.1) in Zeile 1112 der Datei wp-includes/link-template.php :
apply_filters( 'post_type_archive_link', $link, $post_type );
Und die Verwendung:
add_filter( 'post_type_archive_link', function( $link, $post_type ) {
//Do something
return $link;
}, 10, 2 );
Schauen Sie sich einfach die Quelle von get_post_type_archive_link()
an:
return apply_filters( 'post_type_archive_link', $link, $post_type );
Anmerkung: Die Funktion verwendet home_url()
, einen Wrapper für get_home_url()
, der einen anderen Filter bietet:
return apply_filters( 'home_url', $url, $path, $orig_scheme, $blog_id );
das läuft früher. Wenn "Pretty Permalinks" aktiviert ist, wird Folgendes ausgeführt:
$link = home_url( user_trailingslashit( $struct, 'post_type_archive' ) );
und ohne:
$link = home_url( '?post_type=' . $post_type );
Willkommen bei WPSE Ittikorn!
Manchmal ist es am einfachsten, direkt auf die Quelle zu schauen. Es gibt sogar einen Link ganz unten auf der Codex-Seite, die Sie verlinkt haben:
https://core.trac.wordpress.org/browser/tags/4.1.1/src/wp-includes/link-template.php#L1112
Dort können Sie leicht erkennen, dass es tatsächlich einen Filter namens post_type_archive_link
gibt.
Um Ihnen ein Beispiel zu geben:
add_filter( "post_type_archive_link", "wpse_179209", 10, 2 );
function wpse_179209( $link, $post_type ){
// Do whatever you want to the $link
return $link;
}