Фильтрация записей по мета-данным записи
Я хочу отфильтровать записи таким образом, чтобы отображались только те записи, для которых get_post_meta($post->ID, "project_cat", true)
(он возвращает ID записи) равен моему указанному значению.
Есть ли способ сделать это?
Меня особенно интересуют способы, совместимые с плагином WP-Paginate.

Объект WP_Query
принимает аргумент для работы с метаполями. В общем случае вам нужно сделать следующее:
$my_query = new WP_Query(
array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'project_cat',
'value' => 'my-value',
)
),
// Другие параметры запроса
)
);
Где 'my-value' — это ваше 'указанное значение'.
Пример использования:
add_action( 'pre_get_posts' , 'my_pre_get_posts' );
function my_pre_get_posts( $query ) {
// Проверяем, что это основной запрос и другие условия, если необходимо
if( $query->is_main_query() ) {
$query->set(
'meta_query',
array(
array(
'key' => 'project_cat',
'value' => 'my-value'
)
)
);
}
}
Смотрите WP_Query, pre_get_posts. Все условные теги доступны для использования. В текущем примере это будет выполняться для каждого основного запроса — что, скорее всего, нежелательно.
Альтернативно можно использовать query_posts
(более простой, но гораздо менее эффективный способ) для изменения запроса только в конкретном месте шаблона.

@TahirYasin - смотри кодекс.
