从数据库选项表中查询预先保存的帖子

时间:2011-02-01 作者:kaiser

我发现了一个关于杂志风格头版的问题,它总是从一大堆不同的类别、标签或自定义分类法中只查询1篇文章(或custom\\u post\\u类型等)。我想了一会儿,以这样的事情作为开始。

function pre_saved_posts() {
    if (
        ! is_admin()
        OR ! current_user_can( \'edit_posts\' )
    )
        return;

    global $post;

    // Option-Name
    $opt_name = \'theme_post_ids\';
    // get data from DB
    $db_option_value = get_option( $opt_name );
    // If there\'s nothing in the DB, create an array, else add the ID to the array of post_IDs
    empty( $db_option_value ) ? $post_ids = array( $post->ID ) : $post_ids .= $post->ID;

    // get posts
    $posts = get_posts( array( \'include\' => $post_ids ) );

    // DB-Option @Option-Table updaten or add
    empty( $db_option_value ) ? add_option( $opt_name, $posts ) : update_option( $opt_name, $posts );
}
// Do it when a post is updated
add_action( \'save_post\', \'pre_saved_posts\', 20 ); 
将显示如下:

$some_posts = get_option( \'theme_post_ids\' );
foreach ( $some_posts as $post )
{
    // possible for ex.: $post->ID, $post->post_content, $post->post_title, etc.
}
它没有经过测试,只是一个例子,但也许有人对扩展它感兴趣。我仍然怀疑这有多大意义,但我可以想象,有一个大型多维数组包含不同请求的子数组。

$some_posts = get_option( \'theme_post_ids\' ); $home_posts = $someposts[\'home\'];
如果将其存储在global $var, 也许性能会有所提高。

想法/建议/什么?

1 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@kaiser:

考虑使用Transients API 相反,这就是它的目的。

结束