如何从播放列表中删除硬编码字符?

时间:2018-03-16 作者:Gui Odai

我正在为一个大量使用默认媒体播放器的网站开发Wordpress主题。在设计播放列表样式的过程中,我发现一个核心文件注入了硬编码字符,而这些字符不能仅仅通过使用CSS使其不可见,因此我对如何隐藏/删除它们有点不知所措。

这些字符被注入每个播放列表条目的3个不同位置:

这些条目已编号,但容器是div而不是ol,因此使用列表样式类型:none是不可能的\\wp包括\\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>
当然我可以编辑这个核心文件,但我不想这样做。那我该怎么办?在函数上添加过滤器。php?制作JS文件?

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

在播放列表的快捷码功能中,有一行:

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() 呼叫然后对函数进行任何修改,以获得所需的标记。

不过,我会避免做任何过于激烈的事情,因为脚本可能取决于特定的类和一般结构。但是删除这些不需要的字符应该不是问题。

SO网友:Jonas Lundman

对于title 有疑问的是,他们在歌曲标题中添加了卷曲引号,但没有使用:before和:after和其他类型的模板using gettext calls, 您可以在函数中像这样过滤javascript模板。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( 呼叫vs__( 呼叫。

/如果有人遇到同样的问题

结束