我想更改get_header_image_tag函数的输出以输出我想要的确切HTML。我还希望能够将数据添加到输出中,例如尚未涵盖的新srcset ...
我曾尝试使用apply_filters get_header_image_tag对其进行测试,但无法将其投入使用:
apply_filters('get_header_image_tag', "<img src>", get_custom_header(), ['url' => 'test']);
echo get_header_image_tag();
我非常确信我对apply_filters如何工作的理解可能是那里的问题......我一直在阅读它,但我无法理解这些参数。我在网上找到的大多数例子都只使用了钩子和单个值。
我理解它的方式,我想通过使用<img src=url>
中的数据并使用&#39; test&#39;替换URL属性来使输出为get_custom_header()
。
然而,输出的是默认的get_header_image_tag。我还试图直接回应apply_filters:
echo apply_filters('get_header_image_tag', "<img src>", get_custom_header(), ['url' => 'test']);
但是,只输出<img src>
......
答案 0 :(得分:2)
你是完全正确的,这是你对如何使用wordpress过滤器的理解:)
使用apply_filters()时,您正在应用过滤器。要将自己的过滤器添加到get_header_image_tag挂钩,您必须使用add_filter()。以下是添加过滤器的示例:
// 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的完整输出的示例:
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);
但是,你使用的是什么版本的WP?我很确定get_header_image_tag()支持srcset,就像我刚刚使用它时出现的那样。