我试图更改父主题中的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;不确定我做错了什么。如果短码删除功能触发,那么就不应该出现问题吗?
帮助将受到高度赞赏!
答案 0 :(得分:1)
即使没有调用/使用它们,也不能有多个具有相同名称的函数。如果您想避免致命错误,可以使用if(function_exists('function_name'){}
,但如果已经注册了另一个函数,则不会执行您的函数。
在您的情况下,您只需使用自定义前缀更改函数名称即可。例如,function ux_accordion_item
应更改为function myprefix_accordion_item
,然后将add_shortcode
更新为add_shortcode('accordion-item', 'myprefix_accordion_item');
。其他短代码也是如此。