If statement shortcode

时间:2019-11-22 作者:Josh Rodgers

因此,我创建了一个短代码来返回一些ACF内容。

以下代码起作用:

function howitworks() {
    $page = get_page_by_title(\'shop\');
    if (have_rows(\'steps\', $page->ID)) :
        while (have_rows(\'steps\', $page->ID)) : the_row();
            $image = get_sub_field(\'icon\');
            $i = \'<div class="col">
                    <img src="\'.$image[\'sizes\'][\'thumbnail\'].\'" alt="\'.$image[\'alt\'].\'" title="\'.$image[\'alt\'].\'" />
                    <h2>\'.the_sub_field(\'step\').\'</h2>
                    <p>\'.the_sub_field(\'description\').\'</p>
                </div>\';
        endwhile;
    endif;
    return $i;
}
add_shortcode(\'howitworks\', \'howitworks\');
我遇到的问题是,我想在if 以及while. 我尝试了多种方法。我尝试了另一个变量,如$j = \'<div class="test">\' 然后添加了另一个返回return $i, $j...但是我有一个语法错误。如果添加分号,错误就会消失,但div不会返回。如果我想在这段时间内得到div,我会很好的。但我似乎有问题,因为我想把它放在时间之外。

我尝试的另一件事是返回外部div,如:return \'<div class="test">\'; 这将返回div,但我原来的返回没有返回任何内容。

有什么想法吗?

谢谢,乔希

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

尝试以下操作:

<?php

function howitworks() {
    $page = get_page_by_title(\'shop\');
    $html = \'\';
    if (have_rows(\'steps\', $page->ID)) :
        $html .= \'<div class="test">\';
        while (have_rows(\'steps\', $page->ID)) : the_row();
            $image = get_sub_field(\'icon\');
            $html .= \'<div class="col">
                    <img src="\'.$image[\'sizes\'][\'thumbnail\'].\'" alt="\'.$image[\'alt\'].\'" title="\'.$image[\'alt\'].\'" />
                    <h2>\'.get_sub_field(\'step\').\'</h2>
                    <p>\'.get_sub_field(\'description\').\'</p>
                </div>\';
        endwhile;
        $html .= \'</div>\';
    endif;
    return $html;
}
add_shortcode(\'howitworks\', \'howitworks\');
?>
编辑:我将代码更改为用get\\u sub\\u字段替换\\u sub\\u字段

SO网友:Josh Rodgers

所以,我想给山姆一个信任,他解决了这个问题,所以他的答案是正确的。。。我只是做了一点小调整,让它100%工作。我做了get_sub_field 变量而不是内联调用它们,这有助于它们正确显示(而不是在div容器上方)。我的最终代码如下所示:

function howitworks() {
    $page = get_page_by_title(\'shop\');
    $html = \'\';
    if (have_rows(\'steps\', $page->ID)) :
        $html .= \'<div class="test">\';
        while (have_rows(\'steps\', $page->ID)) : the_row();
            $image = get_sub_field(\'icon\');
            $step = get_sub_field(\'step\');
            $desc = get_sub_field(\'description\');
            $html .= \'<div class="col"><img src="\'.$image[\'sizes\'][\'thumbnail\'].\'" alt="\'.$image[\'alt\'].\'" title="\'.$image[\'alt\'].\'" /><h2>\'.$step.\'</h2><p>\'.$desc.\'</p></div>\';
        endwhile;
        $html .= \'</div>\';
    endif;
    return $html;
}
add_shortcode(\'howitworks\', \'howitworks\');
谢谢,乔希

相关推荐

Shortcode to pull posts

我需要一些帮助。我创建了一个短代码来引入帖子,然后使用ajax加载更多帖子。我的一切都正常,但它复制了第一组帖子。下面是我的代码。这是shortcode函数:add_shortcode( \'articles-grid\', \'articles_grid\' ); function articles_grid( $atts ) { $showdate = $showauthor = $post_meta = $post_author = $post_seperator