Mysql
 sql >> Baza danych >  >> RDS >> Mysql

WordPress pre_get_posts nie działa

Dokumentację znajdziesz na pre_get_post filtruj tutaj http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Wygląda na to, że problem polega na tym, jak ustawiasz identyfikatory post_id, które chcesz pobrać. Jeśli odniesiesz się do powyższego linku, możesz zobaczyć różne wartości, które można ustawić w $query obiekt, który jest przekazywany do filtra i post_id nie jest jednym z nich, dlatego "działa" po ustawieniu i "nie działa" po ustawieniu p . To ostatnie dotyczy pojedynczego identyfikatora posta, więc jeśli chcesz tylko 100, użyjesz $query->set('p', 100) . Jeśli chcesz zwrócić wyniki, w których identyfikator postu znajduje się w tablicy, użyj $query->set('post__in', array(100, 120)) . Twój kod SQL po prostu zwraca identyfikator, więc zamiast zwracać obiekty, możesz po prostu uzyskać tablicę bezpośrednio — zakładam, że powtórzenie tytułu i print_r linie są tylko debugowane:

// get results as a numeric array
$post_ids = $wpdb->get_results($request, ARRAY_N);
// pass post id array to $query
$query->set( 'post__in', $post_ids );

Możesz również nie uzyskać wyników, jeśli istnieją sprzeczne parametry ustawione w $query . Możesz sprawdzić te wartości za pomocą var_dump($query->query_vars) i ustaw dowolny, który może być w konflikcie, na pusty ciąg - w twoim przypadku $query->set( 'm', '' );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj według SQL z zamówieniem według

  2. mysql concat_ws bez duplikatów

  3. Zapytanie o powtarzające się zdarzenia mySQL

  4. Przygotowana instrukcja C# + MySQL z problemami z DUPLICATE KEY UPDATE

  5. Wybierz i wyświetl tylko zduplikowane rekordy w MySQL