WordPress - 覆盖/过滤get_header_image_tag

时间:2016-08-22 18:58:29

标签: php wordpress wordpress-theming hook

我想更改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> ......

1 个答案:

答案 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,就像我刚刚使用它时出现的那样。