it-swarm.com.ru

Как удалить жестко закодированные символы из списков воспроизведения?

Я работаю над темой Wordpress для веб-сайта, который активно использует медиаплеер по умолчанию. В процессе оформления своих плейлистов я обнаружил, что основной файл внедряет жестко закодированные символы, которые нельзя сделать невидимыми только с помощью CSS, поэтому я немного не понимаю, как их скрыть/удалить.

Эти символы вводятся в 3 разных места в каждой записи плейлиста:

  1. эти записи пронумерованы, но контейнер - это div вместо ol, поэтому использование list-style-type: ни один не возможен;
  2. они добавляют фигурные кавычки к названию песни, но не с помощью: before и: after;
  3. и они добавляют тире перед именем исполнителя, также не используя псевдокласс: before.

В wordpress\wp-includes\js\media.php есть функция с именем wp_underscore_playlist_templates , которая объявляет следующий скрипт:

<script type="text/html" id="tmpl-wp-playlist-item">
<div class="wp-playlist-item">
    <a class="wp-playlist-caption" href="{{ data.src }}">
        {{ data.index ? ( data.index + '. ' ) : '' }}
        <# if ( data.caption ) { #>
            {{ data.caption }}
        <# } else { #>
            <span class="wp-playlist-item-title"><?php
                /* translators: playlist item title */
                printf( _x( '&#8220;%s&#8221;', 'playlist item title' ), '{{{ data.title }}}' );
            ?></span>
            <# if ( data.artists && data.meta.artist ) { #>
            <span class="wp-playlist-item-artist"> &mdash; {{ data.meta.artist }}</span>
            <# } #>
        <# } #>
    </a>
    <# if ( data.meta.length_formatted ) { #>
    <div class="wp-playlist-item-length">{{ data.meta.length_formatted }}</div>
    <# } #>
</div>
</script>

Конечно, я мог бы редактировать этот основной файл, но я не хочу этого делать. И что же мне делать? Добавить фильтр на functions.php? Сделать файл JS?

4
Gui Odai

Внутри функции шорткода для плейлистов есть эта строка:

do_action( 'wp_playlist_scripts', $atts['type'], $atts['style'] );

В это включается wp_playlist_scripts(), которая подключает шаблоны в нижний колонтитул:

add_action( 'wp_footer', 'wp_underscore_playlist_templates', 0 );
add_action( 'admin_footer', 'wp_underscore_playlist_templates', 0 );

Поэтому, если вы хотите заменить шаблоны, вы можете подключиться к wp_playlist_scripts после эти крючки были добавлены (так что любой приоритет больше 10), удалить крючки, а затем подключить свои собственные шаблоны:

function wpse_296966_hook_new_playlist_templates() {
    // Unhook default templates.
    remove_action( 'wp_footer', 'wp_underscore_playlist_templates', 0 );
    remove_action( 'admin_footer', 'wp_underscore_playlist_templates', 0 );

    // Hook in new templates.
    add_action( 'wp_footer', 'wpse_296966_underscore_playlist_templates', 0 );
    add_action( 'admin_footer', 'wpse_296966_underscore_playlist_templates', 0 );
}
add_action( 'wp_playlist_scripts', 'wpse_296966_hook_new_playlist_templates', 20 );

Затем вам просто нужно скопировать функцию wp_underscore_playlist_templates() полностью в новую функцию в вашей теме/плагине с именем wpse_296966_underscore_playlist_templates() (или что угодно, просто нужно соответствовать вызову add_action(). Затем внесите любые изменения, которые вы хотите, чтобы функция получила разметка, которую вы хотели.

Я бы не стал ничего делать слишком радикально, поскольку сценарии, вероятно, зависят от конкретных классов и общей структуры. Но удаление этих нежелательных персонажей не должно быть проблемой.

5
Jacob Peattie

Для title in question "они добавляют фигурные кавычки к названию песни, но не с помощью: before и: after;" и другие виды шаблонов используя вызовы gettext , вы можете фильтровать шаблоны javascript следующим образом в вашем functions.php:

add_filter('gettext_with_context', function($translated, $text, $context, $domain){
    if($context = 'playlist item title' && $text == '&#8220;%s&#8221;') $translated = "%s";
    return $translated;
}, 10, 4);

Отметьте имя фильтра, оно отличается от контекста _x( звонков против __( вызовов.

/ Если кто-то борется с такими же проблемами

1
Jonas Lundman