因此,我创建了一个短代码来返回一些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,但我原来的返回没有返回任何内容。
有什么想法吗?
谢谢,乔希
最合适的回答,由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\');
谢谢,乔希