Bu fonksiyonu kullanınca aldığım sorgu çıktısı bu şekilde oluyor

'SELECT * FROM `table` ORDER BY 'col_name' 'DESC''
Yani col_name'e ve order değerine tek tırnak ekliyor. Bir hata da almıyorum. Şahsen verileri de çekiyor ama order olayı çalışmıyor yani sadece verileri çekiyor DESC ve ASC ye göre veri çıktısı alamıyorum. Bir çok arama yaptım bir sonuca varamadım. str_replace ile tek tırnakları kaldırıyorum ama bu da saçma ve mantıksız geliyor. Yani bir fikrim de yok https://developer.wordpress.org/reference/classes/wpdb/prepare/ açıklama da bulamadım yani iki parametre alıyor fonksiyon. Bilgisi olan var mı? ayrıca kullandığım str_val() ile alakalı bir şey değil.

Kullandığım yapı

$orderby = isset( $_GET['orderby'] ) ? strval( $_GET['orderby'] ) : "col_name";
$order = isset( $_GET['order'] ) ? strval( $_GET['order'] ) : "DESC";

global $wpdb;
$table = $wpdb->prefix . "tablo";
$query = $wpdb->prepare( "SELECT * FROM `$table` ORDER BY %s %s", array( $orderby, $order ) );
Aşağıda ki şekilde kullanarak çözdüm
$query = $wpdb->prepare( "SELECT * FROM `$table` ORDER BY %1s %2s", array( $orderby, $order ) );