在显示内容之前,请检查帖子是否处于实时状态

时间:2012-11-19 作者:V Neal

我正在尝试将帖子/页面中的内容拉入模板文件。

我使用的是以下代码,虽然工作正常,但无论内容设置为“live”还是“draft”,都会将其拉入。

在引入内容之前,是否有办法检查帖子是否处于活动状态?

<?php  show_post(\'Offers\');  // Shows the content of the offers page. ?>
谢谢你

请注意,正在使用此功能。。。

<?php 
function show_post( $path ) {
    $post = get_page_by_path( $path ); 
    $content = apply_filters( \'the_content\', $post->post_content ); 
    echo $content;
} 
?>

3 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

您的自定义函数show_post() 使用get_page_by_slug() 检索指定的页。

Looking at source, 看起来不像get_page_by_slug() 使用post_status. 因此,您需要查询$post->post_status 在您的show_post() 函数,如果要在函数输出中对其进行说明:

<?php 
function show_post( $path ) {
    $post = get_page_by_path( $path ); 
    $content = \'\';
    if ( \'publish\' == $post->post_status ) {
        $content = apply_filters( \'the_content\', $post->post_content ); 
    }
    echo $content;
} 
?>

SO网友:Mubbashar

我想你应该使用这个功能

<?php get_post_status( $ID ) ?>

http://codex.wordpress.org/Function_Reference/get_post_status

然后,您可以使用以下工具检查帖子的状态:

<?php

if ( get_post_status( $ID ) == \'publish\' ) {

    echo get_the_title( $ID );
}

?>

SO网友:s_ha_dum

从数据库中提取帖子时,请确保将post_status 参数到publish. 喜欢

$args = array( \'numberposts\' => 5, \'offset\'=> 1, \'category\' => 1 , \'post_status\' => \'publish\'); $myposts = new WP_Query( $args );

\'post_status\' => \'publish\', 如果使用get_posts. 我认为这是最好的方法,因为你从数据库中获取的帖子会更少。

如果出于某种原因,您必须获取多个post状态,请检查$post->post_status 在打印之前。

if (\'publish\' == $post->post_status) {
    // do stuff
}

结束

相关推荐

get_posts by id not working

我有以下代码:global $post; $current_post = $post->ID; $array=range(1,$current_post); $posts = get_posts(\'numberposts=5&post__in=\' . $array . \'&category=\'. $category->term_id . \'&exclude=\' . $current_post); 出现的错误为Warning: