web-dev-qa-db-ja.com

"get_post_type_archive_link()"のフィルタ

この関数から返されるリンクを修正するためのフィルタやフックを見つけようとしました

get_post_type_archive_link()

私はほとんどの文書を読み終えました。私はそれがそこにないかどうかわからないか、私はそれを見つけることができません。

任意の提案は非常に高く評価されます。

4
Ittikorn S.

フィルタはpost_type_archive_linkwp-includes/link-template.phpファイルの1112行目で定義されています(WP 4.1.1)

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

そして使用:

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

    //Do something

    return $link;

}, 10, 2 );
6
cybmeta

get_post_type_archive_link() のソースを見てください。

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

サイドノート:この関数はhome_url()を使用しています。これは get_home_url() のラッパーで、別のフィルタを提供しています。

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

それは早く走ります。 "かわいいパーマリンク"を有効にすると、以下の動作をします。

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

となし:

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

WPSE Ittikornへようこそ!

ときどきソースを正しく見るのが最も簡単なことがあります。リンクしたCodexページの一番下にリンクもあります。

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

実際にはpost_type_archive_linkという名前のフィルタが実際にあることがわかります。

例を挙げましょう。

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