上述问题有很多错误。首先,post_parent
在查询中,参数必须是整数。您正在为其分配一个字符串。对wordpress函数的许多调用,例如the_excerpt()
和wp_reset_query()
缺少结尾分号。$atts
是短代码属性的关联数组。如果要使用属性,则需要在shortcode函数中提取属性。没有必要将它们传递给循环函数,特别是考虑到您事先没有提取它们。此外,您甚至没有尝试在其中使用它们。
此外,我不明白为什么要将它分为两个函数。我不会在函数和用法中包含直接标记ob_get_clean
要么,但是echo
或return
直接获得所需的结果。后两者或多或少是个人喜好。
也就是说,这将满足您的需求:
function andrew_loop_shortcode( $atts ) {
extract( shortcode_atts( array(
\'parent\' => 8,
\'type\' => \'page\',
\'perpage\' => 4
), $atts ) );
$output = \'<div class="clear"></div><div class="childs grid_12">\';
$args = array(
\'post_parent\' => $parent,
\'post_type\' => $type,
\'posts_per_page\' => $perpage,
\'sort_column\' => \'menu_order\'
);
$andrew_query = new WP_Query( $args );
while ( $andrew_query->have_posts() ) : $andrew_query->the_post();
$output .= \'<div id="service-hp">\'.
get_the_post_thumbnail(\'home-thumb\').
\'<h2 style="margin-bottom:5px">\'.
get_the_title().
\'</h2>\'.
get_the_excerpt().
\'<a class="read-more" href="\'.
get_permalink().
\'">en savoir plus <img src="\'.
get_bloginfo( \'template_url\' ).
\'/images/read-more.png"></a></div><!-- ends here -->\';
endwhile;
wp_reset_query();
$output .= \'</div>\';
return $output;
}
add_shortcode(\'andrewloop\', \'andrew_loop_shortcode\');
上面的第2-6行并不是绝对必要的,但增加了快捷代码的功能。
如果您只是使用[andrewloop]
在现在的页面中,它将显示您当前的目标。为了实现这一点,可以在shortcode函数中静态设置查询参数。然而,对于第2-6行,这些现在是短代码的默认值,但它们可以在不再次修改函数的情况下动态更改。
有了以上内容,您现在可以使用[andrewloop parent="6" perpage="3"]
例如。因此,短代码可以用于多个不同的查询。
进一步阅读,以防您介意: