如何在WordPress unctions.php中创建带有Repeater字段的ACF短码?

时间:2016-10-18 作者:leonardeveloper

所以我正在写一篇推荐信,我想用ACF Repeater字段创建一个短代码,所以我发现了这个link 我试图在我的网站上应用它,但它不起作用。

这是我的ACF字段结构

enter image description here

这是我的密码functions.php:

  function corridor_1_fn() {

   if( function_exists(\'have_rows\') ) {

   ob_start();

   if( have_rows(\'_tl\') ): 

    echo

    "<table class=\'\'>
        <tr>
            <th>Status</th>
        <th>Quality</th>
        <th>Material</th>
    </tr>";

?>

    <?php while( have_rows(\'_tl\') ): the_row(); ?>
        <tr>
            <td class="">
                <?php the_sub_field(\'_testimonial_content\'); ?>
            </td>
            <td class="">
                <?php the_sub_field(\'_testimonial_author\'); ?>
            </td>
            <td class="">
                <?php the_sub_field(\'_testimonial_img\'); ?>
            </td>
        </tr>

    <?php endwhile; ?>

    </table>

<?php endif;

     $content = ob_get_contents();
     ob_end_clean();
     return $content;

    }

}
add_shortcode(\'testimonials\', \'corridor_1_fn\');
因此,我只是从链接复制了代码,并更改了我的推荐自定义字段的字段值,但不起作用。推荐信位于“我的仪表板”的“主题选项”中。我错过了什么?

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

如果您的ACF“\\u tl”位于选项页上,则不必使用链接(ob_start(); , $content = ob_get_contents(); ob_end_clean();).

您只需要在have_rows函数中指定包含此字段的页面,在您的情况下,它是Option 页因此:

if( have_rows(\'_tl\',\'option\') ): 
...
while( have_rows(\'_tl\',\'option\') ): the_row(); ?>

而不是echo 最好使用此结构:


$out = \'\';
$out .= \'<table class="">\';
  $out .= \'...\';
$out .= \'</table>\';

return $out;

相关推荐