sql >> Database teknologi >  >> RDS >> Mysql

WordPress pre_get_posts virker ikke

Du kan finde dokumentationen på pre_get_post filtrer her http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Det ser for mig ud til, at problemet i virkeligheden er, hvordan du indstiller de post_ids, som du vil hente. Hvis du henviser til linket ovenfor, kan du se de forskellige værdier, der kan indstilles på $query objekt, der sendes til filteret, og post_id er ikke en af ​​dem, hvorfor det "virker", når du indstiller det, og "virker ikke", når du indstiller p . Sidstnævnte er for et enkelt post-id, så hvis du bare ville have 100, ville du bruge $query->set('p', 100) . Hvis du vil returnere resultater, hvor post-id'et er i et array, bruger du $query->set('post__in', array(100, 120)) . Din SQL-kode returnerer bare ID'et, så i stedet for at returnere objekter, kan du bare få et array direkte - jeg antager, at det gentager titlen og print_r linjer fejler bare:

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

Du får muligvis heller ikke resultater, hvis der er eksisterende modstridende parametre indstillet på $query . Du kan kontrollere disse værdier med var_dump($query->query_vars) og sæt enhver, der kan være i konflikt med en tom streng - i dit tilfælde $query->set( 'm', '' );



  1. Vis SQL-forespørgselsresultater i php

  2. hvordan man konverterer varchar til datetime-format i mysql

  3. Sådan udføres skemaændringer i MySQL &MariaDB på en sikker måde

  4. Hvordan kan jeg bruge OR condition i MySQL CASE udtryk?