Cara merubah tag meta box default menjadi kategori meta box

Photo by Mikhail Nilov on Pexels

Hello Everyone, pembahasan Artikel pada kesempatan kali ini adalah merubah Meta Box pada WordPress atau tepatnya adalah Cara merubah tag meta box default menjadi kategori meta box sehingga Meta Box akan terlihat lebih bagus dan elegan, Silahkan perhatikan gambar dibawah ini.

Meta Box Default menjadi Categori Meta Box

Seperti yang Anda lihat, kotak meta baru menampilkan semua tag sekaligus. Mengapa kita membutuhkan penggantian ini? Mungkin beberapa teman akan merasa nyaman dan bermanfaat jika Meta Box dibuat seperti gambar diatas. Anda juga dapat melakukan lebih banyak hal dengan jQuery.

Kami akan menunjukkan cara melakukan penggantian ini dalam dua langkah mudah. Cukup masukkan kode dari langkah pertama dan kedua ke dalam functions.php file Anda dan semuanya akan berfungsi. Yuk kita mulai.

Link MangcodingLangkah 1. Hapus Kotak Meta Tag Lama

Untuk membuat yang baru, kita perlu menghapus yang lama. Hanya karena WordPress tidak mendukung filter dan tindakan yang memungkinkan untuk mengubah konten metabox. Kita tidak boleh mengubah file inti WordPress.

/**
 * Meta Box Removal
 */
function rudr_post_tags_meta_box_remove() {
    $id = 'tagsdiv-post_tag'; // you can find it in a page source code (Ctrl+U)
    $post_type = 'post'; // remove only from post edit screen
    $position = 'side';
   
    remove_meta_box($id, $post_type, $position);
}


add_action('admin_menu', 'rudr_post_tags_meta_box_remove');

Link MangcodingLangkah 2. Buat yang baru seperti kotak meta kategori

Kami hanya menggunakan 3 fungsi WordPress, diantaranya :

  • add_meta_box()
  • get_terms() — untuk mendapatkan semua tag yang ada
  • get_the_terms() — untuk mendapatkan semua tag yang ditetapkan untuk dikirim

Untuk lebih jelasnya silahkan perhatikan kode dibawah ini!

/* Add */
function rudr_add_new_tags_metabox() {
    $id = 'rudrtagsdiv-post_tag'; // it should be unique
    $heading = 'Tags'; // meta box heading
    $callback = 'rudr_metabox_content'; // the name of the callback function
    $post_type = 'post';
    $position = 'side';
    $pri = 'default'; // priority, 'default' is good for us


    add_meta_box($id, $heading, $callback, $post_type, $position, $pri);
}


add_action('admin_menu', 'rudr_add_new_tags_metabox');


/* Fill */
function rudr_metabox_content($post) {
    // get all blog post tags as an array of objects
    $all_tags = get_terms(array('taxonomy' => 'post_tag', 'hide_empty' => 0));


    // get all tags assigned to a post
    $all_tags_of_post = get_the_terms($post->ID, 'post_tag');


    // create an array of post tags ids
    $ids = array();
    if ($all_tags_of_post) {
        foreach ($all_tags_of_post as $tag) {
            $ids[] = $tag->term_id;
        }
    }


    // HTML
    echo '<div id="taxonomy-post_tag" class="categorydiv">';
    echo '<input type="hidden" name="tax_input[post_tag][]" value="0" />';
    echo '<ul>';
    foreach ($all_tags as $tag) {
        // unchecked by default
        $checked = "";


        // if an ID of a tag in the loop is in the array of assigned post tags - then check the checkbox
        if (in_array($tag->term_id, $ids)) {
            $checked = " checked='checked'";
        }


        $id = 'post_tag-' . $tag->term_id;
        echo "<li id='{$id}'>";
        echo "<label><input type='checkbox' name='tax_input[post_tag][]' id='in-$id'" . $checked . " value='$tag->slug' /> $tag->name</label><br />";
        echo "</li>";
    }
    echo '</ul></div>'; // end HTML
}

Anda dapat menggunakan kode diatas tidak hanya untuk tag tetapi juga untuk taksonomi non-hierarkis apa pun pada WordPress.

Silahkan Anda coba praktekkan apa yang Mangcoding jelaskan pada Artikel diatas, mudah-mudahan artikel ini dapat bermanfaat dan bisa menyelesaikan masalah dan menjadi sebuah solusi untuk Anda terutama Cara merubah tag meta box default menjadi category meta box.

Referensi : Rudrastyh