添加显示多次的快捷代码标题

时间:2015-09-16 作者:stackers

嗨,下面是我在帖子中添加短代码的代码。当我添加两次短代码时,它会显示两次标题,就像我在代码“最近的帖子”中添加的一样。有没有办法只显示一次标题的顶部意思?enter image description here

/*shortcode start*/
add_shortcode( \'recent-posts\', \'PL_recent_posts\' );

function PL_recent_posts( $atts  ) {
    extract( shortcode_atts( array(
        \'numbers\' => \'5\',
        \'order\' => \'ASC\',

    ), $atts ) );

    $rposts = new WP_Query( array( \'posts_per_page\' => $numbers, \'orderby\' => \'date\' , \'colorss\' =>     $color ) );


    if ( $rposts->have_posts() ) {
        $html = \'<h3>Recent Posts</h3><ul class="recent-posts">\';
        while( $rposts->have_posts() ) {
            $rposts->the_post();
            $html .= sprintf(
                \'<li><a href="%s" title="%s">%s</a></li>\',
                get_permalink($rposts->post->ID),
                get_the_title(),
                get_the_title()
            );
        }
        $html .= \'</ul>\';
    }
 wp_reset_query();

return $html;
}

2 个回复
SO网友:cameronjonesweb

向插件输出添加包装器

if ( $rposts->have_posts() ) {
    $html = \'<div class="pl_recent_posts">\';
    $html .= \'<h3>Recent Posts</h3><ul class="recent-posts">\';
    while( $rposts->have_posts() ) {
        $rposts->the_post();
        $html .= sprintf(
            \'<li><a href="%s" title="%s">%s</a></li>\',
            get_permalink($rposts->post->ID),
            get_the_title(),
            get_the_title()
        );
    }
    $html .= \'</ul>\';
    $html .= \'</div>\';
}
创建自定义CSS文件

.pl_recent_posts:not(:first-of-type) h3 {
    display: none;
}
并将CSS文件排队

function pl_recent_posts_styles() {
    wp_enqueue_style( \'pl_recent_posts_style\', plugins_url(\'stylesheet.css\', __FILE__) );
}

add_action( \'wp_enqueue_scripts\', \'pl_recent_posts_styles\' );
这不会将其从DOM中完全删除,但会将其从视图中隐藏

SO网友:CK MacLeod

这些问题也让我觉得有点荒谬,让我怀疑实际上还有其他一些未说明的目标。

对于这种用法,您可能需要查看wp\\u get\\u recent\\u posts(),尤其是因为这些查询显然不会在循环中替换或发生(相关地,不知道为什么要使用新查询和重置)。

逐字逐句回答这个问题,尽管仍然有点困惑:

/*shortcode start*/
add_shortcode( \'recent-posts\', \'PL_recent_posts\' );

function PL_recent_posts( $atts  ) {

extract( shortcode_atts( array(
    \'numbers\' => \'5\',
    \'order\' => \'ASC\',

), $atts ) );

//colorss?
$rposts = new WP_Query( array( \'posts_per_page\' => $numbers, \'orderby\' => \'date\' , \'colorss\' =>     $color ) );

if ( $rposts->have_posts() ) {

    //this could also go outside this loop (you\'ll always have at least 1 recent post!)
    $html = \'<h3>Recent Posts</h3>\';

    $add_html = \'<ul class="recent-posts">\';

    while( $rposts->have_posts() ) {
        $rposts->the_post();
        $add_html .= sprintf(
            \'<li><a href="%s" title="%s">%s</a></li>\',
            get_permalink($rposts->post->ID),
            get_the_title(),
            get_the_title()
        );
    }

    $add_html .= \'</ul>\';

}

wp_reset_query();

$add_html .= $add_html;

$html .= $add_html;

return $html;

}

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请