it-swarm-id.com

Metabox Khusus dengan Dropdown Taksonomi - Menyimpan Masalah

Tujuan saya sederhana --- untuk membuat jenis pos kustom dengan metabox khusus dengan daftar drop-down sederhana dari istilah taksonomi alih-alih memanfaatkan tag atau kotak centang. Alasannya adalah untuk memastikan bahwa editor hanya dapat memilih satu istilah dari daftar taksonomi.

Setelah coba-coba akhirnya saya berhasil menemukan cara untuk memanfaatkan alat pembuatan metabox yang sangat baik yang saya gunakan dari WP-Alchemy (http://farinspace.com/wpalchemy-metabox/) untuk membuat metabox saya dan membuatnya menampilkan yang berlaku istilah dalam daftar dropdown.

Masalah yang saya alami adalah sepertinya saya tidak bisa mendapatkan pilihan baru dari menu dropdown untuk menyimpan nilai yang dipilih.

Untuk menjadi jelas ... penting bahwa hanya satu istilah yang dikaitkan dengan setiap posting dalam jenis posting kustom ini yang berarti bahwa setiap kali nilai yang berbeda dipilih dari menu dropdown dan posting disimpan perlu memastikan pilihan sebelumnya tidak terdaftar.

Seperti yang disebutkan saat ini saya memilikinya menampilkan daftar istilah dalam dropdown dan saya juga sudah benar menampilkan istilah apa pun yang mungkin terkait.

Hanya penghematan nilai-nilai baru di mana saya mengalami masalah.

Dari penelitian yang luas itu "sepertinya" seperti solusinya menggunakan fungsi wordpress "wp_set_post_terms" yang dijelaskan lebih lanjut di sini: http://codex.wordpress.org/Function_Reference/wp_set_post_terms Namun saya tidak yakin bagaimana menggunakannya dengan benar untuk mencapai hasil yang saya inginkan.

Di bawah ini saya telah memasukkan kode yang saya gunakan. Sangat mungkin ada cara yang lebih baik untuk melakukan ini dan saya akan menghargai saran apa pun yang kalian miliki mungkin juga memastikan bahwa "pemeriksaan" yang berlaku sedang dilakukan untuk memastikan data tidak dapat dimasukkan oleh pengguna yang tidak berwenang.

FILE FUNCTIONS.PHP (MENUNJUKKAN PENCIPTAAN KUSTOM POST TYPE DAN TAXONOMY DI BAWAH.

//////////////////////////////////////////////////////////////////////////////
// CUSTOM POSTTYPE FOR -- SERVICES  
//////////////////////////////////////////////////////////////////////////////

add_action('init', 'services');
function services() {
 register_post_type('services', array(
  'labels' => array(
   'name'   => __('Services'),
   'singular_label'  => __('Service'),
   'new_item'   => __('Add a Service'),
   'add_new'   => __('Add a Service'),
   'add_new_item'  => __('Add a Service'),
   'edit'   => __('Edit Service'),
   'edit_item'   => __('Edit Service'),
   'view'   => __('View Service'),
   'view_item'   => __('View Service'),
   'search_items'  => __('Search Services'),
   'not_found'   => __('No Services Found'),
   'not_found_in_trash' => __('No Services Found in Trash'),
       'parent_item'  => __('Parent Service'),
   'parent_item_colon' => __('Parent Service:')
   ),
  'can_export'    => true,
  'menu_position'   => 7,
  'public'    => false,
  'show_ui'    => true,
  'publicly_queryable'  => true,
  'hierarchical'   => true,
  'query_var'    => true,
  'capability_type'   => 'post',
  'exclude_from_search'  => false,
  'supports' => array(
   'title',
   'editor',
   'revisions',
   'page-attributes'
   ),
  'rewrite' => array( 
   'slug'   => 'disability-services', 
   'with_front'   => false
   )
 ));
}

DI SINI IS DI MANA SAYA MENDAFTAR TAXONOMI, SAYA BERUSAHA BEKERJA DENGAN

// CUSTOM TAXONOMY METABOX POSTTYPE - AGE GROUPS
   register_taxonomy('theme', array('services'), array(
    'hierarchical'          => false, 
    'singular_label'            => 'Age Group', 
    'query_var'                 => 'theme',
    'public'                => true,
    'show_ui'               => true,
    'show_tagcloud'             => false,
    'show_in_nav_menus'             => true,    
    'rewrite'               => array( 'slug' => 'age-groups', 'with_front' => false ),
    'labels' => array(
        'name'          => __( 'Age Groups' ),
        'singular_name'         => __( 'Age Groups' ),
        'search_items'      => __( 'Search Age Groups' ),
        'all_items'             => __( 'All Age Groups' ),
        'parent_item'       => __( 'Parent Age Group' ),
        'parent_item_colon'         => __( 'Parent Age Group:' ),
        'edit_item'             => __( 'Edit Age Group' ), 
        'update_item'       => __( 'Update Age Group' ),
        'add_new_item'      => __( 'Add Age Group' ),
        'new_item_name'         => __( 'New Name of Age Group' ),
        'popular_items'         => __( 'Popular Age Groups' ),
        'separate_items_with_commas'=> __( 'Separate Age Groups with commas' ),
        'add_or_remove_items'   => __( 'Add or remove Age Groups' ),
        'choose_from_most_used' => __( 'Select Popular Age Groups' ), 
        ),
   ));
   wp_insert_term('Kids', 'theme');
   wp_insert_term('Teens', 'theme');
   wp_insert_term('Adults', 'theme');

INI IS PENGINGAT KODE SAYA MENGGUNAKAN DALAM FUNGSI FILE DAN KODE UNTUK MENCIPTAKAN METABOX BERBASIS WPALECHEMY. Dalam upaya ini saya mencoba memasukkan 'save_filter' => "wp_set_post_terms ($ post-> ID, 'theme')", dengan harapan ini akan menyimpan data yang berlaku tetapi tidak.

// CUSTOM METABOX POSTTYPE - SERVICE DETAILS
   $custom_metabox_service_details = new WPAlchemy_MetaBox(array (
    'id'        => '_service_details-metaboxes',        // underscore prefix hides fields from the custom fields area
    'title'     => 'Age Groups',            // title added automatically to the custom metabox
    'types'     => array('services'),           // added only for custom post type "name-of-post-type" can also be "page" or "post"
    'context'   => 'normal',                    // same as above, defaults to "normal" but can use "advanced" or "side"
    'priority'  => 'high',                  // same as above, defaults to "high" but can use "low" as well
    'mode'  => WPALCHEMY_MODE_EXTRACT,
    'save_filter' => "wp_set_post_terms( $post->ID, 'theme' )",
    'template'  => TEMPLATEPATH . '/admin-metabox/service_details-metaboxes.php'  // contents for the meta box
    ));

SAYA HARUS JUGA MENYATAKAN BAHWA DIMAS SELAMA AT WPALECHMEY HANYA DITAMBAHKAN BEBERAPA KODE BARU DI DALAMNYA 1.3.2 VERSI GITHUB YANG MENGIZINKAN KODE DI ATAS UNTUK MENCIPTAKAN A

'save_filter' => "custom-function", 

Kode ini memungkinkan Anda untuk membuat fungsi kustom atau saya kira memanggil fungsi kustom yang dijalankan setelah menekan tombol publikasikan jadi mungkin itu cara terbaik untuk menyimpan data?

Dalam kasus apa pun, saya menggunakan kode berikut untuk metabox khusus untuk menampilkan daftar dropdown aktual yang menampilkan istilah taksonomi.

<?php 
// This function gets called in edit-form-advanced.php
echo '<input type="hidden" name="taxonomy_noncename" id="taxonomy_noncename" value="' . wp_create_nonce( 'taxonomy_theme' ) . '" />';

// Get all theme taxonomy terms
$themes = get_terms('theme', 'hide_empty=0'); 
?>

<select name='post_theme' id='post_theme'>
// DISPLAY TERMS AS DROP DOWN OPTIONS
<?php $names = wp_get_object_terms($post->ID, 'theme'); ?>
<option class='theme-option' value='' <?php if (!count($names)) echo "selected";?>>None</option>
<?php foreach ($themes as $theme) {
 if (!is_wp_error($names) && !empty($names) && !strcmp($theme->slug, $names[0]->slug)) 
 echo "<option class='theme-option' value='" . $theme->slug . "' selected>" . $theme->name . "</option>\n"; 
 else
 echo "<option class='theme-option' value='" . $theme->slug . "'>" . $theme->name . "</option>\n"; 
}
?>
</select>

Saya berasumsi menyimpan data harus sederhana seperti pai, tapi saya kira saya bingung sendiri bagaimana melakukannya.

Seperti yang saya sebutkan, saya akan sangat menghargai jika Anda juga dapat memberikan saran pada kode untuk memastikan setiap pemeriksaan yang diperlukan dilakukan untuk memastikan data disimpan dengan benar dan hanya orang yang diotorisasi dengan benar.

Harus berterima kasih sebelumnya!

3

Bagi siapa pun yang tertarik, saya menjawab pertanyaan ini di pos berbeda:

Menyimpan Ketentuan Taksonomi

1