
wp query – WP_Query merusak situs web yang tidak dapat diangkat
Saya menggunakan WP_Query untuk menampilkan postingan bertipe ‘kursus’ berdasarkan data pendaftaran yang terdapat di postingan bertipe ‘tutor_enrolled’. ID postingan terkait dikumpulkan di $course_ids. Segera setelah saya menerbitkan kueri saat ini, situs web saya menjadi tidak responsif, diduga karena kerumitan kueri (atau mungkin, karena beberapa kesalahan sintaksis). Apakah ada cara untuk menghindari kueri ini merusak situs web?
function custom_query_callback() {
$current_user = wp_get_current_user();
$args = array(
'post_type' => 'tutor_enrolled',
'post_author' => $current_user->ID,
'fields' => 'ids',
'post_parent' => 0
);
$enrollments = new WP_Query( $args );
if ( $enrollments->have_posts() ) {
$course_ids = array();
while ( $enrollments->have_posts() ) {
$enrollments->the_post();
$course_ids[] = get_post_field( 'post_parent' );
}
wp_reset_postdata();
$args = array(
'post_type' => 'courses',
'post__in' => $course_ids,
'posts_per_page' => -1,
'orderby' => 'post__in'
);
$courses = new WP_Query ( $args );
if ( $courses->have_posts() ) {
while ( $courses->have_posts() ) {
$courses->the_post();
}
wp_reset_postdata();
}
}
}
add_action( 'elementor/query/custom_query_callback', 'custom_query_callback' );
Saya sedang berpikir untuk menyederhanakannya ke arah:
function custom_query_callback( $query ) {
$current_user = wp_get_current_user();
$args = array(
'post_type' => 'tutor_enrolled',
'post_author' => $current_user->ID,
'fields' => 'ids',
'post_parent' => 0
);
$enrollments = new WP_Query( $args );
if ( $enrollments->have_posts() ) {
$course_ids = array();
while ( $enrollments->have_posts() ) {
$enrollments->the_post();
$course_ids[] = get_post_field( 'post_parent' );
}
wp_reset_postdata();
}
$query->set( 'post__in', $course_ids );
}
add_action( 'elementor/query/custom_query_callback', 'custom_query_callback' );
Namun, saya tidak terlalu paham dengan WP_Query secara umum dan percaya bahwa pemformatan saya sangat salah. Bisakah seseorang menyarankan saya cara terbaik (dan akurat dalam hal WP_Query) untuk mencapai ini?