web-dev-qa-db-de.com

Filter für "get_post_type_archive_link ()"

Ich habe versucht, Filter oder einen Hook zu finden, um den von dieser Funktion zurückgegebenen Link zu ändern

get_post_type_archive_link()

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.

4
Ittikorn S.

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 );
6
cybmeta

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 );
5
kaiser

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;
}
5
kraftner