Shortcode with foreach

时间:2018-04-30 作者:wpdev

我不能对foreach使用shortcode。它给了我语法错误。我错在哪里?

function create_galeri_shortcode($atts) {

$atts = shortcode_atts(
    array(
    ),
    $atts,
    \'galeri\'
);

if ( has_post_format( \'gallery\' )) {
    $images = get_post_meta(get_the_ID(), \'vdw_gallery_id\', true);
    if($images) {
        $out = \'<div id="lightgallery">\'.
        foreach ($images as $imageid) {
        $altyazi = get_post_meta( get_the_ID(), \'_wp_attachment_image_alt\', true ).\'
        <a href="\'.wp_get_attachment_url($imageid, \'large\').\'" data-sub-html=".caption">
            <img src="\'.wp_get_attachment_url($imageid, \'thumbnail\').\'" alt="\'.$altyazi.\'">
            <div class="caption">
                <h4>\'.$altyazi.\'</h4><p>\'.wp_get_attachment_caption($imageid).\'</p>
            </div>
        </a>
        \'.}.\'
        </div>\';
    }
}
return $out;
}
add_shortcode( \'galeri_mm\', \'create_galeri_shortcode\' );

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

您正在尝试连接foreach 语句转换为字符串,这无法完成。。。您需要将所需的输出添加到现有字符串中,而不是连接它

function create_galeri_shortcode( $atts ) {

    $atts = shortcode_atts(
        array(
        ),
        $atts,
        \'galeri\'
    );

    if ( has_post_format( \'gallery\' ) ) {
        $images = get_post_meta( get_the_ID(), \'vdw_gallery_id\', true );
        if( $images ) {
            $out = \'<div id="lightgallery">\'.
            foreach ($images as $imageid) {
                $altyazi = get_post_meta( get_the_ID(), \'_wp_attachment_image_alt\', true );
                $out .= \'<a href="\'.wp_get_attachment_url($imageid, \'large\').\'" data-sub-html=".caption">\';
                    $out .= \'<img src="\'.wp_get_attachment_url($imageid, \'thumbnail\').\'" alt="\'.$altyazi.\'">\';
                    $out .= \'<div class="caption">\';
                        $out .= \'<h4>\'.$altyazi.\'</h4>\'; 
                        $out .= \'<p>\'.wp_get_attachment_caption( $imageid ).\'</p>\';
                    $out .= \'</div>\';
                $out .= \'</a>\';
            }
            $out .= \'</div>\';
        }
    }
return $out;
}
add_shortcode( \'galeri_mm\', \'create_galeri_shortcode\' );

结束

相关推荐

Shortcode produces blank page

我在使用的主题中添加了短代码,但当我尝试在页面中使用它们时,它会给我一个空白页面。我看到了一个解决这个问题的方法remove_filter(\"the_content\", \"wpautop\"); 但我不确定这是否有效。如果会,请让我知道,请让我知道该代码放在哪里。否则,如何解决此问题。如果您需要查看我正在尝试添加哪些短代码,请告诉我,我将随它们一起发布一个文件。提前谢谢。EDIT 下面是我用来添加短代码的函数:function facebook($atts) { extract(sh