Короткий код не работает. Возвращает ошибку meassage

#wordpress #shortcode

#wordpress #короткий код

Вопрос:

У меня есть этот код для создания пользовательского короткого кода. Но он возвращает это сообщение об ошибке. Как преодолеть эту ошибку.

[ПРИМЕЧАНИЕ: я также пытался закрыть тег php перед запуском html и запустить его снова после завершения html]

Parse error: syntax error, unexpected '<' in C:xampphtdocstheme-devwp-contentthemessportifyfunctions.php on line 77

 // Add Shortcode
    function custom_shortcode() {

    <div class="intro"> /* line no 79 */
        <div class="intro_boxes_wrap">

            <div class="d-flex flex-row align-items-start justify-content-start flex-wrap">
                <?php 
                    $query = new WP_Query(array(
                        'post_type'     => 'intro',
                        'post_per_page' => 3,
                    ));
                    while($query->have_posts()): $query->the_post(); 
                ?>
                <!-- Intro Box -->
                <div class="intro_box d-flex flex-column align-items-center justify-content-center text-center">
                    <?php the_post_thumbnail(); ?>
                    <div class="intro_box_title"><h3><?php the_title(); ?></h3></div>
                    <div class="intro_box_text">
                        <?php echo get_the_content(); ?>
                    </div>
                </div>
                <?php endwhile; wp_reset_query();?>

            </div>
        </div>
    </div>

}
add_shortcode( 'kollol', 'custom_shortcode' );
  

Ответ №1:

ошибка заключается в том, что вы пытаетесь вывести html в php-блоке. вы должны использовать теги конца / начала php

 // Add Shortcode
    function custom_shortcode() {
ob_start();
?>

<div class=intro> ... </div> //... exactly the code you got now 

<?php

return ob_get_clean();  //ob_get_clean() is returning everything you echoed or rendered since ob_start()
}
add_shortcode( 'kollol', 'custom_shortcode' );
  

Комментарии:

1. Спасибо за ваш ответ. Я пробовал этот способ, но тогда это не сработало. Теперь я нахожу ошибку. Я не использовал пробел до и после запуска и окончания html-блока