Я создал один плагин, который должен позволять администраторам исключать пользователей из чтения какого-либо специального содержимого с использованием идентификатора поста и пользовательского типа поста.
Вообще, если у некоторого поста есть ID 99
с пользовательским типом записи lesions
и администратор выбирает это, чтобы исключить, пользователь получает 404, если идет по прямой ссылке, а также не видит этот пост в списке.
ПРИМЕЧАНИЕ: мне не нужно делать цикл, мне нужно каким-то образом воздействовать на другой плагин в WP_Query с определенным пользовательским типом записи через некоторый хук, фильтр или действие.
У меня еще не было времени, чтобы проверить это. Но это должно работать. Идея состоит в том, чтобы сохранить идентификаторы и типы записей в wp_options. Затем вы можете получить эти значения и сохранить их в массиве. После этого вы сравниваете их с текущим постом и делаете то действие, которое хотите. Вы можете положить это в functions.php
function sr_excluded_users()
{
global $post;
global $wp_query;
$exclusive_post_ids = array(); // List of post ids ( you can store it in wp options )
$exclusive_post_types = array(); // List of custom post types ( you can store it in wp options )
if( in_array( $post->ID, $exclusive_post_ids ) && in_array( $post->post_type, $exclusive_post_types ) )
{
$wp_query->set_404();
status_header( 404 );
get_template_part( 404 );
exit();
}
}
add_action( 'wp', 'sr_excluded_users' );
Редактировать : Функция удаления сообщений из цикла
function sr_excluded_users_loop($query)
{
$exclusive_post_ids = array(); // List of post ids ( you can store it in wp options )
$query->set( 'post__not_in' , $exclusive_post_ids );
}
add_action( 'pre_get_posts', 'sr_excluded_users_loop' );
Других решений пока нет …