Mysql
 sql >> база данни >  >> RDS >> Mysql

WordPress pre_get_posts не работи

Можете да намерите документацията в pre_get_post филтрирайте тук http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Струва ми се, че проблемът всъщност е как задавате post_ids, които искате да извлечете. Ако се обърнете към връзката по-горе, можете да видите различните стойности, които могат да бъдат зададени в $query обект, който се предава на филтъра, и post_id не е един от тях, поради което "работи", когато го зададете, и "не работи", когато зададете p . Последното е за един идентификатор на публикация, така че ако просто искате 100, ще използвате $query->set('p', 100) . Ако искате да върнете резултати, при които идентификационният номер на публикацията е в масив, използвайте $query->set('post__in', array(100, 120)) . Вашият SQL код просто връща идентификатора, така че вместо да връщате обекти, можете просто да получите масив директно - предполагам, че повтаряйки заглавието и print_r редовете само отстраняват грешки:

// 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 );

Възможно е също да не получите резултати, ако има съществуващи конфликтни параметри, зададени в $query . Можете да проверите тези стойности с var_dump($query->query_vars) и задайте всеки, който може да е в конфликт, на празен низ - във вашия случай $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. Инсталирайте и конфигурирайте MySQL Workbench на Ubuntu 16.04

  2. MySQL бърз съвет:Използване на функцията LENGTH и TRIM

  3. Актуализиране на MySql база данни с помощта на PHP чрез javascript функция onClick

  4. PDO + MySQL винаги връща низове, но какво да кажем за MsSQL?

  5. JDBC VS Hibernate