У меня есть функция, которая возвращает все сообщения определенного типа сообщений, упрощенные здесь:
public static function getFoos() { $output = array(); $args = array( 'posts_per_page' => -1, 'post_type' => Foo::POST_TYPE, ); $posts = get_posts($args); foreach ($posts as $post) { $output[$post->ID] = $post->post_title; } return $output; }
Когда я вызываю эту функцию изнутри admin_enqueue_scripts
на post.php
, я правильно получаю три ожидаемых сообщения. Однако, когда эта функция запускается из одного и того же hook на edit.php
нулевые сообщения. Можно видеть, что getFoos()
не принимает никаких параметров.
Я замечаю, что в запросах post.php
class-wp-query->get_posts()
создает этот SQL:
SELECT alt_posts.* FROM alt_posts WHERE 1=1 AND alt_posts.post_type = 'foo' AND ((alt_posts.post_status = 'publish')) ORDER BY alt_posts.post_date DESC \G
Однако в запросах edit.php
он создает этот SQL:
SELECT alt_posts.* FROM alt_posts LEFT JOIN alt_term_relationships ON (alt_posts.ID = alt_term_relationships.object_id) WHERE 1=1 AND ( alt_term_relationships.term_taxonomy_id IN (69) ) AND alt_posts.post_type = 'foo' AND ((alt_posts.post_status = 'publish')) GROUP BY alt_posts.ID ORDER BY alt_posts.post_date DESC
Почему get_posts()
возвращает один и тот же результат при разных вызовах?