如何用html和php代码创建一个快捷代码

时间:2021-10-26 作者:Digital Point

这是我尝试的方式,但不起作用

function blogPost(){
    return ?>
    <section class="blog container spacer">
      <article class="blog__list">
       <div class="glide-blog">
          <div class="glide__arrows" data-glide-el="controls">
            <button class="glide__arrow glide__arrow--left" data-glide-dir="<">&lt;</button>
            <button class="glide__arrow glide__arrow--right" data-glide-dir=">">&gt;</button>
         </div>
       <div class="glide__track" data-glide-el="track">
            <ul class="glide__slides">
    
           <?php 
            $the_query = new WP_Query( \'posts_per_page=3\' ); ?>
              
            <?php 
            // Start our WP Query
            while ($the_query -> have_posts()) : $the_query -> the_post(); 
            ?>
              
             <li class="glide__slide"><?php the_post_thumbnail(\'medium\'); ?>
                <a href="<?php the_permalink() ?>" class="new-article__main-title"><?php the_title(); ?></a>
            </li>
              
            
              
            <?php 
            // Repeat the process and reset once it hits the limit
            endwhile;
            wp_reset_postdata();
            ?>
            </ul>
      </article>
    </section>
    <?php
}
add_action(\'blog-shortcode\',\'blogPost\');

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

您可以使用PHPs输出缓冲,使用ob_start 打开缓冲和ob_get_clean 获取并删除当前输出缓冲。

所以按照你的代码看应该是这样的

function blogPost(){
    ob_start();
?>
    <section class="blog container spacer">
        <article class="blog__list">
            <div class="glide-blog">
                <div class="glide__arrows" data-glide-el="controls">
                    <button class="glide__arrow glide__arrow--left" data-glide-dir="<">&lt;</button>
                    <button class="glide__arrow glide__arrow--right" data-glide-dir=">">&gt;</button>
                </div>
                <div class="glide__track" data-glide-el="track">
                    <ul class="glide__slides">
                        <?php 
                        $the_query = new WP_Query( \'posts_per_page=3\' );

                        // Start our WP Query
                        while ($the_query->have_posts()) : $the_query->the_post(); 
                        ?>
                        <li class="glide__slide"><?php the_post_thumbnail(\'medium\'); ?>
                            <a href="<?php the_permalink() ?>" class="new-article__main-title"><?php the_title(); ?></a>
                        </li>
                        <?php 
                        // Repeat the process and reset once it hits the limit
                        endwhile;
                        wp_reset_postdata();
                        ?>
                    </ul>
                </div>
            </div>
        </article>
    </section>
<?php
    return ob_get_clean();
}
add_shortcode(\'blog_shortcode\',\'blogPost\');
请注意add_action 我们现在有add_shortcode, add_shortcode 是用于创建自定义短代码的函数。

我还修复了代码的一些问题。

  • $the_query -> have_posts() “之间不应包含空格”;箭头“;,应该是这样的$the_query->have_posts().</div> 标签</div> 标签

相关推荐

列出短码(DO_SHORTCODE)中的分类术语段

我想在我的短代码中列出分类术语。这是我获取术语列表的方式(用逗号分隔):<?php $terms = get_the_terms( $post->ID , array( \'shoptype\' ) ); $i = 1; foreach ( $terms as $term ) { $term_link = get_term_link( $ter