我在wordpress上安装了这个插件: http://wordpress.org/plugins/put/
我试图制作在我自己的插件中使用UI Tabs插件的插件。
到目前为止我的插件代码:
function load_jquery(){
echo '<link rel=\'stylesheet\' id=\'jquery-ui-tabs-css\' href=\'http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/themes/smoothness/jquery-ui.css?ver=1.9.2\' type=\'text/css\' media=\'all\' />';
}
add_action('wp_head','load_jquery');
function print_tabs(){
echo do_shortcode('[tab name="Tab"]-[/tab]');
echo do_shortcode('[end_tabset]');
}
add_shortcode('print_tabs', 'print_tabs');
现在,如果我在新页面中使用[print_tabs]短代码,它应该如下所示: http://img835.imageshack.us/img835/4905/workingp.png
但它不起作用,它看起来像这样: http://imageshack.us/a/img62/9772/notworkingm.png
这可能是什么问题?
答案 0 :(得分:0)
我在Post UI Tabs插件中的put.php中看到的问题是,只在“the_content”过滤器中添加了一个名为“on_the_content”的函数中的短代码。
add_filter( 'the_content', array( $this, 'on_the_content' ), 7 ); // Priority 7 - before wpautop
(put.php第96行)
该功能如下:
public function on_the_content( $content ) {
$this->has_tabs = (bool) apply_filters( 'put_decide_has_tabs', $this->has_tabs );
if( !$this->has_tabs )
return $content;
global $shortcode_tags;
// Backup current registered shortcodes and clear them all out
$orig_shortcode_tags = $shortcode_tags;
$shortcode_tags = array();
add_shortcode( 'tab', array( $this, 'on_tab_shortcode' ) );
add_shortcode( 'end_tabset', array( $this, 'on_tab_end_shortcode' ) );
// Do the shortcode(only the tab shortcode is registered at this point)
$content = do_shortcode( $content );
// Put the original shortcodes back
$shortcode_tags = $orig_shortcode_tags;
return $content;
}
(从put.php第118行开始)
所以,考虑到如何通过使用过滤器修改内容来编写此插件,过滤器又会在运行过滤器时添加短代码,您可能会看到的是因为当您调用“do_shortcode”时,这些短代码不会实际存在。
do_shortcode正在做什么回应,只是咳嗽文本。
不幸的是,由于Post UI Tabs插件的编写方式,您可能无法完成您想要做的事情。