Как добавить несколько коротких кодов в повторитель ACF? - PullRequest
0 голосов
/ 22 марта 2019

Мой код такой:

<?php

function get_toggle_title() {
    return get_sub_field('toggle_title');
};

if( have_rows('toggle_titles') ):
    $i = 1;
    while( have_rows('toggle_titles') ): the_row();


        add_shortcode('toggles-title-'.$i, 'get_toggle_title');

        $i++;

    endwhile;
endif;

?>

.... но это не похоже на работу. Он повторяет одно и то же содержимое для каждого отдельного шорткода: [toggles-title-1], [toggles-title-2] и т. Д.

1 Ответ

0 голосов
/ 22 марта 2019

У меня есть решение.Это код PHP:

/** Create toggles Shortcodes */
function do_toggles_shortcode($atts) {

    $atts = shortcode_atts( array(
        'number' => 1
    ), $atts );

    ob_start();

    if( function_exists('get_field') ):
        if( have_rows('toggle_blocks') ):
            $i = 1;
            while( have_rows('toggle_blocks') ): the_row();

                if( $atts['number'] == $i ) {

                    if( have_rows('toggles') ):
                        ?>
                        <div class="toggles">
                            <?php
                            while ( have_rows('toggles') ) : the_row();
                                ?>
                               <div class="toggle_container">
                                      <div class="toggle_title">
                                        <?php the_sub_field('toggle_title'); ?>
                                        <i class="fas fa-chevron-right"></i>
                                      </div>
                                      <div class="toggle_content">
                                        <?php the_sub_field('toggle_content'); ?>
                                      </div>
                                   </div>
                              <?php
                            endwhile;
                            ?>
                        </div>
                        <?php
                    endif;

                }

                $i++;

            endwhile;
        endif;
    endif;

    return ob_get_clean();
}
add_shortcode('toggles-shortcode', 'do_toggles_shortcode');

А вот так шорткоды выглядят так:

[номер-шорткода с номером = "1"]

[шок-код с переключателемчисло = "2"]

...