如果使用此短代码没有问题[posts id="1,2,3,4"]
, 剩下的唯一一件事就是从id属性创建一个数组并循环它,如下所示。
add_shortcode( \'posts\', \'posts_shortcode\' );
function posts_shortcode($atts) {
$atts = shortcode_atts( array(
\'id\' => \'\'
), $atts );
$HTML = \'<div class="posts">\';
foreach (explode(\',\', $atts[\'id\']) as $post_id) {
// because now we loop all ids and it can be multiple ids
// it would be best to warp each one in its own container
$HTML .=\'<div class="post">\';
$HTML .= \'<div class="thumb">\' . get_the_post_thumbnail($post_id, \'medium\') . \'</div>\';
$HTML .= \'<div class="content">\';
$HTML .= \'<h4>\' . get_the_title($post_id) . \'</h4>\';
$HTML .= \'<p>\' . get_the_excerpt($post_id) . \'</p>\';
$HTML .= \'</div>\';
// this is the closing tag for our "post" container
$HTML. =\'</div>\'; // <div class="post">
}
$HTML .= \'</div>\';
return $HTML;
}
主容器
<div class="posts">
它的结束标记在循环之外,因为我们只需要它们一次。
我不知道为什么要让包含html的变量都是大写字母,但对于PHP变量,约定都是带下划线的小写字母,没有大写字母
当然,你可以随意使用任何你想要的东西,但我只是想说清楚。