Wordpress - показывать шорткод, если у пользователя есть сообщения - PullRequest
1 голос
/ 20 февраля 2020

Я создал шорткод [my-books], который отображается только в том случае, если вошедшие в систему пользователи отправили 1 или более сообщений в пользовательском типе записи 'books'.

Если пользователь отправил сообщение в этот тип сообщения, затем шорткод возвращает кнопку на панель «Мои книги».

Вот мой код:

<?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;
}
?>

Код основан на на этот вопрос ответил @ MikeSchinkel

Мой код работает отлично, но, поскольку ответ датируется 2010 - 2011 годами, я пытаюсь выяснить, есть ли другой, лучший, более эффективный способ сделать это?

(И также, нужно ли мне endif;, чтобы закрыть вызов if(user_has_books($user->ID))? Кажется, что он работает нормально без него.)

...