更改wordpress儿童主题的短代码

时间:2018-03-24 07:41:21

标签: php wordpress function accordion shortcode

我试图更改父主题中的Accordion短代码以包含h-tag,但我遇到了重新声明错误的问题。

以下是父主题中原始代码的accordion.php:

1) Change method interfaceImpl(Class<E>) to interface(Class<E>) 
2) Cast Argument klass to Class<E> 
3) Change type of klass to Class<E>
4) Create method interfaceImpl(Class<E>) in type 'Int2'

我试图做的是:

// [accordion]
function ux_accordion($atts, $content=null, $code) {
    extract(shortcode_atts(array(
        'auto_open' => '',
        'open' => '',
        'title' => ''
    ), $atts));
    if($auto_open) $open = 1;
  if($title) $title = '<h3 class="accordion_title">'.$title.'</h3>';
  return $title.'<div class="accordion" rel="'.$open.'">'.flatsome_contentfix($content).'</div>';       
}
add_shortcode('accordion', 'ux_accordion');


// [accordion-item]
function ux_accordion_item($atts, $content=null, $code) {
    extract(shortcode_atts(array(
        'title' => 'Accordion Panel',
    ), $atts));
    return '<div class="accordion-item"><a href="#" class="accordion-title plain"><button class="toggle"><i class="icon-angle-down"></i></button><span>' . $title . '</span></a><div class="accordion-inner">'.flatsome_contentfix($content).'</div></div>';
}
add_shortcode('accordion-item', 'ux_accordion_item');

这导致&#34;致命错误:无法重新声明ux_accordion_item()&#34;不确定我做错了什么。如果短码删除功能触发,那么就不应该出现问题吗?

帮助将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

即使没有调用/使用它们,也不能有多个具有相同名称的函数。如果您想避免致命错误,可以使用if(function_exists('function_name'){},但如果已经注册了另一个函数,则不会执行您的函数。

在您的情况下,您只需使用自定义前缀更改函数名称即可。例如,function ux_accordion_item应更改为function myprefix_accordion_item,然后将add_shortcode更新为add_shortcode('accordion-item', 'myprefix_accordion_item');。其他短代码也是如此。