// Fungsi untuk menampilkan artikel terkait berdasarkan kategori dan tag function custom_related_posts_shortcode($atts) { // Mengambil parameter dari shortcode $atts = shortcode_atts( array( 'posts_per_page' => 5, // Jumlah posting yang ditampilkan 'category' => '', // Kategori ID (boleh dikosongkan untuk semua kategori) 'tags' => '', // Tag ID (boleh dikosongkan untuk semua tag) ), $atts, 'related_posts' // Nama shortcode ); // Mengambil kategori dan tag sebagai array $category_ids = !empty($atts['category']) ? explode(',', $atts['category']) : array(); $tag_ids = !empty($atts['tags']) ? explode(',', $atts['tags']) : array(); // Argument untuk WP_Query $args = array( 'post_type' => 'post', // Menampilkan postingan 'posts_per_page' => $atts['posts_per_page'], // Jumlah artikel 'post__not_in' => array(get_the_ID()), // Jangan tampilkan artikel yang sedang dibaca 'category__in' => $category_ids, // Filter berdasarkan kategori 'tag__in' => $tag_ids, // Filter berdasarkan tag 'orderby' => 'rand', // Menampilkan artikel secara acak ); // Query untuk mendapatkan artikel terkait $related_posts = new WP_Query($args); // Jika ada artikel terkait, tampilkan if ($related_posts->have_posts()) { $output = '
'; } else { $output = 'No related posts found.
'; } // Reset postdata setelah query wp_reset_postdata(); // Kembalikan output untuk ditampilkan di halaman return $output; } // Menambahkan shortcode [related_posts] add_shortcode('related_posts', 'custom_related_posts_shortcode');