2016-08-22 8 views
0

get_header_image_tag関数の出力を変更して、正確なHTMLを出力したいと考えています。ワードプレス - 上書き/フィルタリングget_header_image_tag

:私はまた、私はそれをテストするために apply_filters get_header_image_tagを使用しようとしましたが、それは仕事を得ることができませんでした

...カバーされていないなど、新たなsrcsetとして出力するデータを追加できるようにしたいです

apply_filters('get_header_image_tag', "<img src>", get_custom_header(), ['url' => 'test']); 
echo get_header_image_tag(); 

apply_filtersの仕組みについての私の理解がそこにあるかもしれないと私はかなり確信しています...私はそれについて読んできましたが、私はパラメータの周りに私の頭を得ることができません。私が見つけたほとんどの例は、フックと単一の値だけを使っていました。

私が理解したとおり、のデータを使用し、URL属性を 'test'に置き換えると、出力は<img src=url>になります。

しかし、出力されるのはデフォルトのget_header_image_tagです。私も直接apply_filtersエコーしようとしました:それはワードプレスフィルタを使用する方法についてのご理解で、あなたは全く正しいです...

echo apply_filters('get_header_image_tag', "<img src>", get_custom_header(), ['url' => 'test']); 

しかし、その後、唯一<img src>が出力されるの

答えて

1

を問題:

apply_filters()を使用しているときにフィルタを適用しています。 get_header_image_tagフックに独自のフィルタを追加するには、add_filter()を使用する必要があります。ここでは、フィルタを追加する方法の例は以下のようになりますされています。あなたはWPのバージョン、

function header_image_markup($html, $header, $attr) { 
    return '<figure><img src="'.$attr['src'].'" width="'.$attr['width'].'" height="'.$attr['height'].'" alt="'.$attr['alt'].'" srcset="'.$attr['srcset'].'" sizes="'.$attr['sizes'].'"></figure>'; 
} 

add_filter('get_header_image_tag', 'header_image_markup', 20, 3); 

しかし:

// define the get_header_image_tag callback 
function filter_get_header_image_tag($html, $header, $attr) { 
    // make filter magic happen here... 
    return $html; 
}; 

// add the filter 
add_filter('get_header_image_tag', 'filter_get_header_image_tag', 10, 3); 

ここでは、get_header_image_tagのフル出力を制御する方法の例です。を使用して?私はsrc_setがget_header_image_tag()でサポートされていることを確信しています。

+0

ありがとう、私は昨日、add_filterのことについて考え出しました...そして数時間後、実際にはデフォルトのパラメータxDを使って出力をオーバーライドしていました。しかし、srcsetがサポートされている間は常にWPの最終バージョンを使用しています 私はadd_filter、apply_filter、add_action、do_action;についてもっと多くのことを予定しています) – Dacramash

+0

@Dacramash Hahah、私は感情を知っています:)アクションとフィルタは素晴らしいです! [Wordpressには2000+のフックがあります](https://developer.wordpress.org/reference/hooks/)ので、遊ぶべきことがたくさんあります:) – lassemt

関連する問題