web-dev-qa-db-fra.com

Filtre pour "get_post_type_archive_link ()"

J'ai essayé de trouver des filtres ou un crochet pour modifier le lien renvoyé par cette fonction

get_post_type_archive_link()

J'ai parcouru la plupart de la documentation. Je ne suis pas sûr que ce n'est pas là ou je ne suis pas capable de le trouver.

Toutes les suggestions seront les bienvenues.

4
Ittikorn S.

Le filtre est post_type_archive_link, défini (WP 4.1.1) à la ligne 1112 du fichier wp-includes/link-template.php :

apply_filters( 'post_type_archive_link', $link, $post_type );

Et l'utilisation:

add_filter( 'post_type_archive_link', function( $link, $post_type ) {

    //Do something

    return $link;

}, 10, 2 );
6
cybmeta

Il suffit de regarder le source de get_post_type_archive_link() :

return apply_filters( 'post_type_archive_link', $link, $post_type );

Note: La fonction utilise home_url(), qui est un wrapper pour get_home_url() , qui offre un autre filtre:

return apply_filters( 'home_url', $url, $path, $orig_scheme, $blog_id );

qui court plus tôt. Avec "Pretty permalinks" activé, il exécute les opérations suivantes:

$link = home_url( user_trailingslashit( $struct, 'post_type_archive' ) );

et sans:

$link = home_url( '?post_type=' . $post_type );
5
kaiser

Bienvenue sur WPSE Ittikorn!

Parfois, il est plus facile de regarder directement la source. Il existe même un lien au bas de la page du Codex que vous avez liée:

https://core.trac.wordpress.org/browser/tags/4.1.1/src/wp-includes/link-template.php#L1112

Là, vous pouvez facilement voir qu’il existe un filtre appelé post_type_archive_link

Donc, pour vous donner un exemple:

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