Я создал шорткод [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))
? Кажется, что он работает нормально без него.)