如何使用ACF将其创建到Wordpress简码中

时间:2019-11-14 13:19:18

标签: wordpress advanced-custom-fields shortcode

我使用的大多数字段都来自ACF pro插件,其中一些使用的是ACF的中继器,我的PHP不好,如何将下面的代码转换为简码?

userPermissions

下面的代码是否正确?如果我错了,请纠正我。

<div class="row">

    <?php 
        if( have_rows('our_golf_tours_list',161) ):                   
    ?>            
    <?php 
         while( have_rows('our_golf_tours_list',161) ): the_row();                   
    ?>

        <div class="col-xs-12 col-sm-6 col-md-6 col-lg-3 m-b-30 col-package">
        <div class="packages-box">
            <a href="<?php the_sub_field('title_link'); ?>"><img src="<?php the_sub_field('image'); ?>" alt="img"></a>
            <div class="package-details-2">
                <h3><a href="<?php the_sub_field('title_link'); ?>"><?php the_sub_field('title'); ?></a></h3>
                <p><?php the_sub_field('date'); ?></p>
            </div>
        </div>
        <div class="packages-box-bottom">
            <a href="<?php the_sub_field('book_now_url'); ?>" class="btn btn-default-custom book-now-small <?php the_sub_field('hubspot_class'); ?>">Book Now <i class="fa fa-angle-right" aria-hidden="true"></i></a>
            <a href="<?php the_sub_field('itinearay_url'); ?>" class="btn itinerary-blank">Itinerary </a>
        </div>
    </div>

    <?php endwhile; ?>

    <?php endif; ?>
</div>

1 个答案:

答案 0 :(得分:1)

您的简码有一些问题:

A。该功能需要正确关闭:

function {

    // your code

} // <-- You forgot the closing bracket

B。您应该使用return语句而不是echo:

您正在函数中使用echo,但这并不是最安全的做法,因为它不能保证您的内容将呈现在您认为的位置。

最好将所有内容封装到完成该功能的return语句中。

大概是这样的:

function {

    // Build up content and hold it somewhere (i.e. a variable)

    $content = '<h1>Fruits</h1>';

    $content .= '<div>apples</div>';
    $content .= '<div>oranges</div>';

    // When ready, finish the function and output the content to wherever the function was called (ie the shortcode)

    return $content;

}

C。您将HTML和PHP混合使用不正确:

在您最初的echo语句中,您尝试将所有HTML和PHP都塞满,但是两者之间必须有所区别(即打开,关闭)。

关于混合使用PHP和HTML,有很多方法和意见,您的工作取决于构建函数逻辑的方式。无论如何,作为起点,这是将HTML和PHP混合使用的方式:

    $newContent = "pears";
    $content .= '<div>' . $pears . '</div>';

有关此的大量教程和文章。