提问者:小点点

WordPress简码总是在页面顶部


我使用以下短代码在页面上显示自定义帖子:

add_shortcode( 'page-section', 'page_section_shortcode' );
function page_section_shortcode( $atts ) {
    global $post;
    $post_slug=$post->post_name;
    $a = shortcode_atts( array(
        'post-name' => 'qwerty',
        'bg-color' => 'white'
    ), $atts );
    $post_slug=$post->post_name;
    $post_name = $a['post-name'];
    $query = new WP_Query( array(
        'post_type' => 'page_section',
        'name' => $post_name,
    ) );
    if ( $query->have_posts() ) { ?>
        <?php while ( $query->have_posts() ) : $query->the_post(); ?>
            <div style="background-color: <?php echo $a['bg-color']; ?>" id="<?php global $post; $post_slug=$post->post_name; echo $post_slug; ?>" class="page-section">
                <div class="row">
                    <?php the_content(); ?>
                </div>
            </div>
        <?php endwhile;
        wp_reset_postdata(); ?>

    <?php $myvariable = ob_get_clean();
    return $myvariable;
    }
}

一切都按照我想要的方式工作,我可以在我的自定义帖子中设置内容,并使用一个简短的代码将内容拉入页面。

问题是,用短代码拉进来的内容总是在页面的顶部。在一行中使用多个短代码,他们保持他们的顺序,但是页面上的任何其他内容都显示在底部(在所有短代码内容的下面)。

我已经尝试删除回声建议在另一个stackoverflow帖子,但似乎找不到我做错了什么。


共2个答案

匿名用户

将您的代码替换为此代码。此代码返回生成的html,因此不会在页面顶部出现回音

add_shortcode( 'page-section', 'page_section_shortcode' );
function page_section_shortcode( $atts ) {
    global $post;
    $post_slug=$post->post_name;
    $a = shortcode_atts( array(
        'post-name' => 'qwerty',
        'bg-color' => 'white'
    ), $atts );
    $post_slug=$post->post_name;
    $post_name = $a['post-name'];
    $query = new WP_Query( array(
        'post_type' => 'page_section',
        'name' => $post_name,
    ) );
    $returnhtml = '';
    if ( $query->have_posts() ) { 
        while ( $query->have_posts() ) : $query->the_post();
            global $post; 
            $returnhtml .= '<div style="background-color: '. $a['bg-color'].'" id="'.$post->post_name.'" class="page-section">';
                $returnhtml .= '<div class="row">'.get_the_content().'</div>';
            $returnhtml .= '</div>';
        endwhile;
        wp_reset_postdata();            
    return $returnhtml;
    }
}

匿名用户

function header_notification()
{   
    echo '<div><strong>Any html goes here</strong></div>';
    
}
add_action('wp_head', 'header_notification');