嗨,我正在构建一个jquery手风琴,它在我的网站上运行得很好。
然而,我现在试图引入条件,只在帖子和页面上启用它,但是它不起作用,似乎条件没有检测到它是一个页面。
代码如下:http://pastebin.com/9anYAKa1
function faq_start_shortcode( $atts, $content = null ) {
return \'<div id="accordion">\';
}
function faq_question_shortcode( $atts, $content = null ) {
return \'<div class="accordionButton">\' . $content . \'</div>\';
}
function faq_answer_shortcode( $atts, $content = null ) {
return \'<div class="accordionContent">\' . $content . \'</div>\';
}
function faq_end_shortcode( $atts, $content = null ) {
return \'</div>\';
}
if ( is_single() || is_page() ) {
add_shortcode(\'faqstart\', \'faq_start_shortcode\');
add_shortcode(\'question\', \'faq_question_shortcode\');
add_shortcode(\'answer\', \'faq_answer_shortcode\');
add_shortcode(\'faqend\', \'faq_end_shortcode\');
}
最合适的回答,由SO网友:Chip Bennett 整理而成
问题是你正在包装你的add_action()
在条件内部调用,但在add_action()
执行调用时,查询和查询条件都不可用。
解决方案:将条件置于回调中:
function faq_start_shortcode( $atts, $content = null ) {
if ( is_single() || is_page() ) {
return \'<div id="accordion">\';
}
}
function faq_question_shortcode( $atts, $content = null ) {
if ( is_single() || is_page() ) {
return \'<div class="accordionButton">\' . $content . \'</div>\';
}
}
function faq_answer_shortcode( $atts, $content = null ) {
if ( is_single() || is_page() ) {
return \'<div class="accordionContent">\' . $content . \'</div>\';
}
}
function faq_end_shortcode( $atts, $content = null ) {
if ( is_single() || is_page() ) {
return \'</div>\';
}
}
add_shortcode(\'faqstart\', \'faq_start_shortcode\');
add_shortcode(\'question\', \'faq_question_shortcode\');
add_shortcode(\'answer\', \'faq_answer_shortcode\');
add_shortcode(\'faqend\', \'faq_end_shortcode\');
(请注意,您可以使用
is_singular()
作为
( is_single() || is_page() )
.