2016-08-22 6 views
0

Я хочу изменить вывод функции get_header_image_tag для вывода точного HTML-кода, который я хочу. Я также хочу, чтобы иметь возможность добавлять данные к выходу, такие как новый srcset, которые не были охвачены ...WordPress - Overwriting/Filtering get_header_image_tag

Я пытался использовать 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>, используя данные в get_custom_header() и заменив атрибут URL на «test».

Однако то, что выводится, является значением по умолчанию get_header_image_tag. Я также попытался непосредственно вторят apply_filters:

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

Но тогда, только <img src> выводится ...

ответ

1

Вы совершенно правы, это ваше понимание о том, как использовать WordPress фильтров, является issue :)

Вы применяете фильтр при использовании 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, которую вы с помощью? Я уверен, что srcset поддерживается в get_header_image_tag(), поскольку он появился, когда я использовал его только сейчас.

+0

Спасибо, я выяснил вчера о приложении add_filter ... Затем несколько часов спустя, что он фактически перекрывал вывод с использованием параметров по умолчанию xD, я использую последнюю версию WP всегда, однако, пока поддерживается srcset , мы хотим сами контролировать выход: Я планирую прочитать намного больше о add_filter, apply_filter, add_action и do_action;) – Dacramash

+0

@Dacramash Hahah, я знаю чувство :) Действие и фильтры потрясающие! [Wordpress имеет 2000+ крючков] (https://developer.wordpress.org/reference/hooks/), поэтому есть много, чтобы играть с :) – lassemt

 Смежные вопросы

  • Нет связанных вопросов^_^