您的代码严重损坏。
您启动函数定义,但从未完成它。没有关联}
结束函数你开始if
有条件的,永远不要关闭它你开始while
循环,切勿关闭这就是您的页面无法加载该代码的原因。您将遇到一个致命的PHP错误,如果整个脚本在第一个脚本中没有跳转,那么将出现多个致命错误。如果你有debugging enabled 你会看到的。
您也在以一种根本无法完成任何事情的方式使用输出缓冲,如果我没有弄错的话,即使您没有致命错误,也会导致页面的其余部分无法显示此外,您的循环无论如何都不会输出任何内容,因为您没有包含任何实际echo
s post信息。您需要的最小修复是:
您正在将类别信息传递到shortcode中,但在查询中硬编码了一个类别。我已经更改了你的默认值以进行补偿。
function vntd_blog_carousel($atts, $content = null) {
extract(shortcode_atts(array(
"cats" => 6, // default cat, if any
"posts_nr" => \'\',
"thumb_style" => \'\'
), $atts));
wp_enqueue_script(\'prettyPhoto\', \'\', \'\', \'\', true);
wp_enqueue_style(\'prettyPhoto\');
wp_enqueue_script(\'owl-carousel\', \'\', \'\', \'\', true);
wp_enqueue_style(\'owl-carousel\');
ob_start();
echo \'<div class="vntd-portfolio-carousel blog-carousel"><div class="works white">\';
$size = \'portfolio-square\';
$args = array(
\'posts_per_page\' => 6,
\'cat\' => $cats,
\'orderby\' => \'slug\'
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) {
while ($the_query->have_posts()) {
$the_query->the_post();
// echo some post data
the_title();
the_content();
} // close the while Loop
} // close the if conditional
wp_reset_postdata(); // moved from before the Loop where it really wasn\'t doing any good
return ob_get_clean(); // use the output buffer that you\'ve created
} // close the function definition.
查看代码注释以了解我所做的一切。我还对代码进行了格式化以提高可读性,并删除了这一噩梦
alternative control syntax, 这只适合疯狂制作。
要将整个过程转化为一个短代码,您只需:
add_shortcode(\'vntd_blog_carousel\',\'vntd_blog_carousel\');
要手动运行,请使用:
do_shortcode(\'[vntd_blog_carousel cats="2"]\');
我不知道其他两个短代码属性应该做什么。