我一直在绞尽脑汁。下面是我创建的一个短码循环,用于显示特定的帖子类型:
function faq_shortcode($atts, $content = NULL) {
extract(shortcode_atts(array(
\'faq_topic\' => \'\',
\'faq_tag\' => \'\',
\'faq_id\' => \'\',
\'limit\' => \'10\',
), $atts));
$faq_topic = preg_replace(\'~�*([0-9a-f]+);~ei\', \'chr(hexdec("\\\\1"))\', $faq_topic);
$faq_tag = preg_replace(\'~�*([0-9a-f]+);~ei\', \'chr(hexdec("\\\\1"))\', $faq_tag);
$faqs = new WP_Query(array(
\'p\' => \'\'.$faq_id.\'\',
\'faq-topic\' => \'\'.$faq_topic.\'\',
\'faq-tags\' => \'\'.$faq_tag.\'\',
\'post_type\' => \'question\',
\'posts_per_page\' => \'\'.$limit.\'\',
\'orderby\' => \'menu_order\',
\'order\' => \'ASC\'
));
$displayfaq= \'<div class="faq_list">\';
while ($faqs->have_posts()) : $faqs->the_post();
$displayfaq .= \'<div class="single_faq">\';
$displayfaq .= \'<h3 class="faq_question">\'.get_the_title().\'</h3>\';
$displayfaq .= \'<p class="faq_answer">\'.get_the_content().\'</p>\';
$displayfaq .= \'</div>\';
endwhile;
wp_reset_query();
$displayfaq .= \'</div>\';
return $displayfaq;
}
add_shortcode(\'faq\',\'faq_shortcode\');
在其中一个循环中,有一个帖子使用了一个短代码
function emailbot_ssc($atts, $content = null) {
extract( shortcode_atts( array(
\'address\' => \'\',
), $atts ) );
ob_start();
echo \'<a href="mailto:\'.antispambot($atts[\'address\']).\'" title="email us" target="_blank" rel="nofollow">\'.$atts[\'address\'].\'</a>\';
$email_ssc = ob_get_clean();
return $email_ssc;
}
add_shortcode("email", "emailbot_ssc");
FAQ循环(代码项#1)未分析短代码。它只是原始显示。
最合适的回答,由SO网友:Mark Jaquith 整理而成
get_the_content()
没有the_content
应用于它的过滤器,即do_shortcode()
被钩住了。这些过滤器仅适用于the_content()
. 这两个函数不仅仅是彼此的get/echo版本。get_the_content()
是较低级别。
这是API中的一个异常,并且是由于历史原因。例如,get_the_title()
应用the_title
过滤器。
如果你想要全部the_content
已应用筛选器堆栈,请执行以下操作:
apply_filters( \'the_content\', get_the_content() )
如果仅希望应用短代码,请执行以下操作:
do_shortcode( get_the_content() )