在传入短码的情况下获取当前帖子ID

时间:2015-12-02 作者:Gorakh Shrestha

是否可以在不传入短代码作为参数的情况下获取当前帖子ID。像[相关帖子]一样,我想获取此短代码将在其中使用的帖子ID。

add_shortcode( \'related-article\', \'related_article_title\' );
function related_article_title( $atts ) {
    $post_id = get_the_ID();
    echo $post_id; 
    ob_start();
    $query = new WP_Query( array(
        \'post_type\' => \'post\',
        \'posts_per_page\' => 1,
        \'order\' => \'DESC\',
        )
    );
    if ( $query->have_posts() ) {   ?>
    <div class="menu-row">
        <?php while ( $query->have_posts() ) : $query->the_post(); ?>
            Leggi anche: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        <?php endwhile; wp_reset_postdata(); ?>
    </div>
    <?php $myvariable = ob_get_clean();
    return $myvariable;
}
}

2 个回复
SO网友:Vasim Shaikh
add_shortcode( \'related-article\', \'related_article_title\' );
function related_article_title( $atts ) {
    global $post;
    echo $post->ID; // currently viewing post id
    ob_start();
    $query = new WP_Query( array(
        \'post_type\' => \'post\',
        \'posts_per_page\' => 1,
        \'order\' => \'DESC\',
        )
    );
    if ( $query->have_posts() ) {   ?>
    <div class="menu-row">
        <?php while ( $query->have_posts() ) : $query->the_post(); ?>
            Leggi anche: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        <?php endwhile; wp_reset_postdata(); ?>
    </div>
    <?php $myvariable = ob_get_clean();
    return $myvariable;
}
}
SO网友:Erenor Paz

正如@gorakh shrestha所尝试的,使用global $post 然后$post->ID, 是一种很好的方法,即使在短代码中也是如此

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗