Wordpress-如果用户有帖子则显示简码

问题描述 投票:0回答:1

我创建了一个简码[my-books],仅当登录的用户以“图书”自定义帖子类型提交了1个或多个帖子时才显示。

如果用户以这种帖子类型提交了帖子,则简码会将一个按钮返回到“我的书”仪表板。

这是我的代码:

<?php
function user_has_books($user_id) {
  $result = new WP_Query(array(
    'author'=>$user_id,
    'post_type'=>'books',
    'post_status' =>'any, trash, auto-draft',
    'posts_per_page'=>1,
  ));
  return (count($result->posts)!=0);
}

add_shortcode( 'my-books' , 'my_book_listings_func' );
function my_book_listings_func( $atts ) {

  $user = wp_get_current_user();
  $mybooksbutton = '<a class="button" href="'. site_url() . '/listings/books/">My Books</a>';

  if ($user->ID)
    if (user_has_books($user->ID))
      return $mybooksbutton;
}
?>

代码基于this question answered by @MikeSchinkel

我的代码工作得很好,但是由于答案可以追溯到2010年-2011年,所以我试图找出是否还有另一种更好,更有效的方法来做到这一点?

(而且,我需要endif;来关闭if(user_has_books($user->ID))调用吗?如果没有它,它似乎可以正常工作。)

我创建了一个简码[my-books],仅当登录的用户以“ books”自定义帖子类型提交了1个或多个帖子时才显示。如果用户以这种帖子类型提交了帖子,则...

php wordpress if-statement custom-post-type
1个回答
0
投票
function user_has_posts($post_type = 'post') {
        global $wpdb;
        $user_id = get_current_user_id();
        $post_count = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author = {$user_id} and post_type = '{$post_type}'");
        return !empty($post_count);
}
echo var_dump(user_has_posts('jobs'));
© www.soinside.com 2019 - 2024. All rights reserved.