您提供的函数实际上看起来没有那么糟糕。这与我处理问题的方式几乎相同,但是如果您只想修改include部分,并且总是获得与帖子相关联的attachment\\u id,那么我会这样做。
实际上,我会创建一个新的短代码,它又称为库短代码。
Inside of your functions.php file:
function get_random_gallery_images(){
global $wpdb,$post;
$ids = "";
$counter = 0;
$number_of_posts = 4;
$args = array(
\'post_type\' => \'attachment\',
\'numberposts\' => 4,
\'post_status\' => null,
\'orderby\' => \'rand\',
\'post_parent\' => $post->ID
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
if ($counter != 0) {
$ids .= \',\'.$attachment->ID;
}
else {
$ids .= $attachment->ID;
}
$counter++;
}
}
return $ids; }
function multi_gallery_shortcode()
{
$attachment_ids = get_random_gallery_images();
return do_shortcode(\'[gallery columns="4" include="\'.$attachment_ids.\'" link="file"]\');
}
add_shortcode(\'multigallery\', \'multi_gallery_shortcode\');
And then inside of your post add this whenever you want to display the gallery. You add this code in via the editor, not any template files:
[multigallery]
所提供的代码具有很强的概念性,因为我还没有对其进行测试,但它应该可以工作,并按照您的要求执行。如果没有,请告诉我,我们会解决的。
我发现的另一个问题可能是错误的,这是您提供的代码中的一行,具体来说,这一行:do_shortcode(\'[ gallery columns="4" include="\'.$attachment_ids.\'" link="file" ]\');
- 在第一个开始括号和最后一个结束括号后有一个空格,这意味着它不会呈现为正确的短代码。在我的代码中,我解决了这个问题。