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

wordpress posts_orderby filtr z niestandardową tabelą we wtyczce

Ok, rozwiązałem to.

Problem polega na tym, że zapytanie post nie zawiera tabeli postmeta, więc dodałem ją na custom_join funkcja, tak:

add_filter('posts_join','custom_join');
add_filter('posts_orderby','custom_orderby');

function custom_join($join){
    global $wpdb;
    $customTable = $wpdb->prefix."custom_table";

    if(!is_admin){
        $join .= "LEFT JOIN $wpdb->postmeta p1 ON $wpdb->posts.ID = p1.post_id";
        $join .= "LEFT JOIN $customTable p2 ON p1.meta_value = p2.slug";
    }

    return $join;
}

function custom_orderby($orderby_statement){
    global $wpdb;

    if(!is_admin){
        $orderby_statement = "p2.price DESC, $wpdb->posts.post_date DESC";
    }

    return $orderby_statement;
}

Dodałem także posts_groupby filtr, ponieważ nowe zapytanie dało mi zduplikowane posty (wiele zduplikowanych postów).

Oto kod:

add_filter('posts_groupby','custom_groupby');

function custom_groupby($groupby){
    global $wpdb;

    if(!is_admin){
       $groupby = "$wpdb->posts.ID";
    }

    return $groupby;
}

Wszystko jest napisane w pliku wtyczki, ale możesz też pisać w function.php plik twojego motywu.

Pamiętaj, aby dołączyć if(!is_admin) oświadczenie, jeśli chcesz zobaczyć tylko zapytanie niestandardowe na froncie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę filtrować znaki Emoji z moich danych wejściowych, aby móc zapisać w MySQL <5.5?

  2. MySQL-Wydajność przy zamawianiu na kolumnie obliczeniowej

  3. Konwersja formatu daty SQL? [dd.mm.rr do RRRR-MM-DD]

  4. Jak opuścić dołączenie 2 tabel w 2 różnych bazach danych?

  5. Jak przekonwertować datetime na UTC w MySQL