WordPress快捷码功能在小工具外部显示

时间:2017-08-06 作者:brandozz

我为下面的一个短代码提供了以下函数。我有一个页脚小部件中的短代码。出于某种原因,输出出现在小部件的容器元素之外。我认为返回值是一种方式,所以我被困在这里了。

if (!function_exists(\'footer_get_latest_post\')) {
    function footer_get_latest_post() {
        $footerPost = \'\';
        $args = array(\'posts_per_page\' => 1 );
        $recent_posts = new WP_Query($args);
        while( $recent_posts->have_posts() ) {
            $recent_posts->the_post();
            $footerPost = \'<div class="footer-post-thumb">\' . the_post_thumbnail(\'thumbnail\') . \'</div>\';
            $footerPost .= \'<div class="footer-post-content"><h3>\' . the_title() . \'</h3>\';
            $footerPost .= the_content() . \'</div>\';
        }
        wp_reset_query();
        return $footerPost;
    }
}
add_shortcode(\'FooterLatestPost\', \'footer_get_latest_post\');
因此,最终的html输出类似于:

<img>
<p>Post Title</p>
<p>Post Content</p>
<div class="footer-widget">
empty
</div>

2 个回复
最合适的回答,由SO网友:Robin Andrews 整理而成

我认为问题在于以下函数the_title() vs公司get_the_title()

这似乎有效:

if (!function_exists(\'footer_get_latest_post\')) {
    function footer_get_latest_post() {
        $footerPost = \'\';
        $args = array(\'posts_per_page\' => 1 );
        $recent_posts = new WP_Query($args);
        while( $recent_posts->have_posts() ) {
            $recent_posts->the_post();
            $footerPost = \'<div class="footer-post-thumb">\' . get_the_post_thumbnail(\'thumbnail\') . \'</div>\';
            $footerPost .= \'<div class="footer-post-content"><h3>\' . get_the_title() . \'</h3>\';
            $footerPost .= get_the_content() . \'</div>\';
        }
        wp_reset_query();
        return $footerPost;
    }
}
add_shortcode(\'FooterLatestPost\', \'footer_get_latest_post\');
没有get 在这一部分,这些函数“原地”响应它们的结果

SO网友:brandozz

通过以下帖子,利用ob\\u start()和ob\\u end\\u clean解决了此问题:Custom shortcode in widget forced to top of widget

if (!function_exists(\'footer_get_latest_post\')) {
    function footer_get_latest_post() {
        ob_start();
        $footerPost = \'\';
        $args = array(\'posts_per_page\' => 1 );
        $recent_posts = new WP_Query($args);
        while( $recent_posts->have_posts() ) {
            $recent_posts->the_post();
            $footerPost = \'<div class="footer-post-thumb">\' . the_post_thumbnail(\'thumbnail\') . \'</div>\';
            $footerPost .= \'<div class="footer-post-content"><h3>\' . the_title() . \'</h3>\';
            $footerPost .= the_content() . \'</div>\';
        }
        wp_reset_query();
        //return $footerPost;
        $output = ob_get_contents();
        ob_end_clean();

        return $output;
    }
}
add_shortcode(\'FooterLatestPost\', \'footer_get_latest_post\');

结束

相关推荐

尝试将动态内容调用为ShortCode属性

我正在尝试向现有(第三方)短代码添加动态属性。短代码在同一页上出现多次。当我这样做时(在functions.php中),我可以得到第一个正确输出的短代码,但其他的则不行。function testOne(){ return do_shortcode(\'[abc type=\"contact\" orderby=\"menu_order\" order=\"asc\" style=\"list-post\" logic=\"and\" abc_tax_student=\"student1\