自定义短代码不会显示在WordPress中的正确位置

ghhkc1vu  于 2023-10-17  发布在  WordPress
关注(0)|答案(1)|浏览(101)

我有一个自定义的文章类型(投资组合),我创建了一个自定义的简码来显示这个自定义的文章类型的最新文章。它工作,但是,它不会显示在正确的位置。它在页面的顶部,而不是我张贴简码的底部。任何帮助将是伟大的!

<?php
function portfolio_posts(){?>
    <?php
    $args = array(
      'numberposts' => '8',
      'post_type'    => 'portfolio'
     );
    ?>
    <?php
    // the query.
    $the_query = new WP_Query( $args ); ?>

    <?php if ( $the_query->have_posts() ) : ?>
        <!-- pagination here -->

        <!-- the loop -->
        <?php
        while ( $the_query->have_posts() ) :
            $the_query->the_post();
            ?>
        <!-- Thumnail, Title and View More Button -->
        <p> <?php the_post_thumbnail('full', array('class' => 'img-fluid')); ?></p>
        <h2 class="post-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        <a class="btn" href="<?php the_permalink(); ?>">View</a>
        <?php endwhile; ?>
        <!-- end of the loop -->

        <!-- pagination here -->

        <?php wp_reset_postdata(); ?>

    <?php else : ?>
        <p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p>
    <?php endif; ?>

<?php    }
add_shortcode('latest_projects', 'portfolio_posts');

一切正常,只是我不能把它显示在正确的位置。

omqzjyyz

omqzjyyz1#

WordPress中的短代码需要返回内容而不是回显,您可以像这样使用ob_startob_get_clean

<?php
function portfolio_posts(){
    ob_start();
    $args = array(
      'numberposts' => '8',
      'post_type'    => 'portfolio'
     );
    // the query.
    $the_query = new WP_Query( $args );

    if ( $the_query->have_posts() ) : ?>
        <!-- pagination here -->

        <!-- the loop -->
        <?php
        while ( $the_query->have_posts() ) :
            $the_query->the_post();
            ?>
        <!-- Thumnail, Title and View More Button -->
        <p> <?php the_post_thumbnail('full', array('class' => 'img-fluid')); ?></p>
        <h2 class="post-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        <a class="btn" href="<?php the_permalink(); ?>">View</a>
        <?php endwhile; ?>
        <!-- end of the loop -->

        <!-- pagination here -->

        <?php wp_reset_postdata();

    else : ?>
        <p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p>
    <?php endif;

    return ob_get_clean();
}
add_shortcode('latest_projects', 'portfolio_posts');

相关问题