仅覆盖某些音频短码HTML输出时出错

时间:2015-11-24 作者:X-Raym

由于WordPress挂钩,我有一个覆盖音频短码HTML呈现的函数:

wp_audio_shortcode_override
我在一个OOP插件中这样使用它:

add_filter( \'wp_audio_shortcode_override\' , array( $this, \'wp_audio_shortcode_override\' ), 10, 2 );
为了防止覆盖所有HTML短代码,我想创建一个自定义短代码属性:

player="default"
就我所能读取的文档和源代码而言,如果我返回一个空字符串\'\', 超越应关闭。所以我在渲染函数的开头写了这个:

public function wp_audio_shortcode_override( $html, $attr ) {

    $html = \'\'; // This is the value to disable the shortcode override

    if ( isset( $attr[\'player\'] ) ) {
        if( $attr[\'player\'] === \'default\' )
            var_dump( $html );
            return $html;
    } 
    // After that, some code to fill the $html with thing to render,
    //   according to the shortcode attributes values
函数的下一部分是如何重写短代码。

结果无条件的短代码覆盖工作,在函数中添加条件,并写入相应的短代码属性player="default" 在一个音频短代码中,工作正常doesn\'t work.Is it possible to control the width of the Wordpress audio player?

我错过了什么?为什么我可以在所有短代码上禁用覆盖,但不能在同一帖子上有选择地禁用覆盖?

1 个回复
SO网友:TheDeadMedic

不管有多少人[audio] 你在帖子中的标签,无论哪个标签有什么属性。我猜测要么你的处理程序的逻辑有点偏离,要么第三方(即插件)正在劫持默认的短代码处理程序行为。

要进行测试,请删除您的代码并尝试以下操作-它应该清楚地显示默认的短代码(如果不是)(&;筛选器按预期工作:

function wpse_209708_debug_audio_shortcode( $html, $attr ) {
    if ( ! empty( $attr[\'player\'] ) && $attr[\'player\'] === \'default\' )
        $html = \'{audio player:default}\';
    else
        $html = \'{audio player:other}\';

    return "<p>$html</p>";
}

add_filter( \'wp_audio_shortcode_override\', \'wpse_209708_debug_audio_shortcode\', 10, 2 );
报告回来,我会用“真实”的答案更新。

相关推荐

Shortcode is not working

通过阅读教程,我创建了一个简单的快捷代码:<?php /* Plugin Name: GT NoTranslate Shortcode Description: Shortcode to wrap a span with the \"notranslate\" span around text. Version: 0.1 BETA Author: Andrew Truckle Author URI: http://www.trucklesoft.co.