如果当前用户以自定义帖子类型撰写了1篇或多篇帖子,则显示文本

时间:2010-12-22 作者:Carson

我试图向未创建帖子的新用户和创建帖子的用户显示不同的内容。

我尝试了这一点,但它不适用于自定义帖子类型(仅适用于普通帖子),也不适用于草稿或挂起的帖子:

<?php if (count_user_posts(1)>=1) { blah blah blah } else {Welcome, blah blah blah }; ?>

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

你好@Carson:

一个简单的函数可以满足您的要求yoursite_user_has_posts() 利用内置的WP_Query 类别:

function yoursite_user_has_posts($user_id) {
  $result = new WP_Query(array(
    \'author\'=>$user_id,
    \'post_type\'=>\'any\',
    \'post_status\'=>\'publish\',
    \'posts_per_page\'=>1,
  ));
  return (count($result->posts)!=0);
}
然后,您可以从主题中调用它,如下所示:

<?php
$user = wp_get_current_user();
if ($user->ID)
  if (yoursite_user_has_posts($user->ID))
    echo \'Thank you for writing!\';
  else
    echo \'Get Writing!\';
?>

SO网友:onetrickpony

看见Best Collection of Code for your functions.php file:

function atom_count($user_id, $what_to_count = \'post\') {
  global $wpdb;    
  $where = $what_to_count == \'comment\' ? "WHERE comment_approved = 1 AND user_id = {$user_id}" : get_posts_by_author_sql($what_to_count, TRUE, $user_id);
  $from = "FROM ".(($what_to_count == \'comment\') ? $wpdb->comments : $wpdb->posts);    
  $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) {$from} {$where}"));
  return $count;
}
如果您想统计所有帖子,无论其类型和状态如何,请更改get_posts_by_author_sql() 具有"WHERE post_author = \'{$user_id}\'"

没有测试,但应该可以。。。

SO网友:Pete

这应该是你想要的。。。

<?php if ( 0 == count_user_posts( get_current_user_id(), "CUSTOMPOSTTYPE" ) && is_user_logged_in() ) { ?>
   Do something if they have no posts
<?php } elseif ( 0 !== count_user_posts( get_current_user_id(), "CUSTOMPOSTTYPE" ) && is_user_logged_in() ) { ?>    
   Do something else if they do have a post         
<?php } ?>

结束

相关推荐