在内容后返回图像数组

时间:2017-04-05 作者:Tammy

我试图在每篇文章后输出一组图像,但我只能输出一个。

add_filter( \'the_content\', \'image_posts\' );
function image_posts( $content ) {
    global $post;
    if ( ! $post instanceof WP_Post ) {
        return $content;
    }
    $all_images = get_images(); // array of images 
    switch ( $post->post_type ) {
        case \'page\':
            // return $content; // this only return content
            foreach ($all_images as $image){
                echo \'<img src="\'.$image.\'" />\';
            }
            // return $content; // this returns all images on top of the content


        default:
            return $content;
    }
}
如果我将循环修改为:

foreach ($all_images as $image){
   return content . \'<img src="\'.$image.\'" />\';
}
我只得到一张图片的内容。如何在内容之后输出所有图像?

1 个回复
最合适的回答,由SO网友:Ian 整理而成

假设我们点击switch语句和页面大小写,并假设$all\\u image确实包含图像URL:

在switch语句中,首先尝试将所有图像存储在一个变量中,然后用$content 在您的退货声明中。

add_filter( \'the_content\', \'image_posts\' );
function image_posts( $content ) {
    global $post;
    if ( ! $post instanceof WP_Post ) {
        return $content; // If this is true, we return $content and the rest of the code doesn\'t run.
    }
    $all_images = get_images(); // array of images 
    $images = ""; // We\'ll store all our image tag strings here here. Assuming, of course, we make it to this section of code.

    switch ( $post->post_type ) {
        case \'page\':
            foreach ($all_images as $image){
                $images .= \'<img src="\'.$image.\'" />\';
            }
            return $content  . $images; // Concatenate $images after $content
    default:
        return $content;
    }
}
你可能遇到的部分问题是,一旦你回来$content 筛选器中不会运行其他代码。

为了增加额外的好处,您可以将一个类添加到图像标记中,或者使用div或其他包装器将其包装起来,以便稍后执行css魔术:)

WordPress过滤器和操作的一点说明:WP过滤器和操作最适合return 语句才能正常运行。而你可以echo 什么,那个echo 实际上发生在代码执行点。这意味着您的代码通常会显示在页面的开头。