作者无帖子时的警告

时间:2012-06-01 作者:neomale

我有一个显示作者最新帖子的页面。但当作者没有帖子时,我会收到一条显示消息

警告:rsort()要求参数1为数组,在。。。

这里是脚本

function wpmu_latest_post_auther($authorId,$how_many = 10, $how_many_words = 50, $more_text = "[...]", $remove_html = true, $sort_by = \'post_date\') {
global $wpdb;

//first, gat all blog id
$query = "SELECT blog_id FROM $wpdb->blogs WHERE blog_id !=\'1\'";
$blogs = $wpdb->get_col($query);

if ($blogs) {
    //we use blog id to loop post query
    foreach ($blogs as $blog) {
        $blogPostsTable = \'wp_\'.$blog.\'_posts\';

         $db_query = "SELECT $blogPostsTable.ID,
                    $blogPostsTable.post_author,
                    $blogPostsTable.post_title,
                    $blogPostsTable.guid,
                    $blogPostsTable.post_date,
                    $blogPostsTable.post_content,
                    $blogPostsTable.post_modified,
                    $blogPostsTable.comment_count
                    FROM $blogPostsTable WHERE $blogPostsTable.post_status = \'publish\'
                    AND $blogPostsTable.post_author = $authorId 
                    AND $blogPostsTable.post_type = \'post\'";

        $thispos = $wpdb->get_results($db_query);

        foreach($thispos as $thispost) {
        if($sort_by == \'post_date\') {
            $order = $thispost->post_date;
        }
        else{
            $order = $thispost->post_modified;
            }

            $post_dates[]           = $order;
            $post_guids[$order]     = $thispost->guid;
            $blog_IDs[$order]       = $blog;
            $post_IDs[$order]       = $thispost->ID;
            $post_titles[$order]    = $thispost->post_title;
            $post_authors[$order]   = $thispost->post_author;
            $post_contents[$order]  = $thispost->post_content;
            $comments[$order]       = $thispost->comment_count;
            }
        }


    rsort($post_dates);
    $union_results  = array_unique($post_dates);
    $ResultArray    = array_slice($union_results, 0, $how_many);

    foreach ($ResultArray as $date) {
        $ID                 = $post_IDs[$date];
        $blogID             = $blog_IDs[$date];
        $id_author          = $post_authors[$date];
        $post_url           = get_blog_permalink($blog_IDs[$date], $ID);/*$post_guids[$date];*/
        $post_title         = $post_titles[$date];
        $post_content       = $post_contents[$date];
        $post_date          = mysql2date(get_option(\'date_format\'), $date);
        $post_time          = mysql2date(get_option(\'time_format\'), $date);
        $total_comment      = $comments[$date];
        $user_info          = get_userdata($id_author);
        $author_blog_url    = get_blogaddress_by_id($user_info->primary_blog);
        $author_url         = $user_info->user_url;
        $author_email       = $user_info->user_email;

        if($user_info->first_name) {
            $author_name = $user_info->first_name.\' \'.$user_info->last_name;
        }
        else{
            $author_name = $user_info->nickname;
        }

        if($remove_html) {
            $post_content = wpmu_cleanup_post($post_content);
        }

        $results = array();

        $results[\'ID\']              = $ID;
        $results[\'blogID\']          = $blogID;
        $results[\'post_url\']        = $post_url;
        $results[\'post_title\']      = $post_title;
        $results[\'post_content\']    = wpmu_cut_article_by_words($post_content, $how_many_words);
        if ($results[\'post_content\'] != $post_content)
            $results[\'post_content\'] .= sprintf(\'  <a href="%s">%s</a>\', $post_url, $more_text);
        $results[\'author_blog_url\'] = $author_blog_url;
        $results[\'author_url\']      = $author_url;
        $results[\'author_email\']    = $author_email;
        $results[\'author_name\']     = $author_name;
        $results[\'post_date\']       = $post_date;
        $results[\'post_time\']       = $post_time;
        $results[\'comment_count\']   = $total_comment;

        $returns[] = $results;
    }

    $latest_posts = wpmu_bind_array_to_object($returns);
    return $latest_posts;
} }
是有人有一个想法,如何不显示警告时,作者没有张贴添加。

当做

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

尝试包装rsort if语句中的位如下所示:

if (!empty($post_dates)) {
    rsort($post_dates);
} else { echo \'optional error message here\'; }
这将首先检查变量是否为空,并且只运行rsort() 如果它不是空的。此检查在大多数情况下都有效,但如果变量实际上不是数组,但包含其他数据,则有时可能出现误报!(例如错误消息)。或者,您可能会发现这在某些情况下更有效:

if ($post_dates != \'\') {
    rsort($post_dates);
}
仅当变量不等于时,此操作才会继续null, 这和空的东西不完全一样。还有其他方法可以检查变量是否是您想要的,例如if (is_array($post_dates)) { do stuff }.

SO网友:Adam

既然你抓住了blog_id 在文章的早期,你可以做的是检查特定的博客是否有帖子,如果有,请继续。

一种方法是使用get_blog_details() 作用

$blog = get_blog_details( $blod_id );
$total_posts = $blog->post_count;

if ($total_posts == O) {

// do nothing (eg. echo \'this author has no posts\';) 

} else {

// your regular code here

}
通过馈送get_blog_details 通过博客ID号,您可以访问一系列属性,其中之一是post_count 您可以在上述范围内使用if/else 在执行函数之前运行检查的条件语句。

因此,您现在可以在用户没有帖子和他们有帖子的情况下显示不同的结果集/信息,您的常规代码将按照正常方式执行。

或者count_user_posts() 可以使用函数,但在这种情况下,上述内容就足够了。

有关更多信息,请访问:;

结束

相关推荐