it-swarm.asia

Taksonomi Açılan Özel Meta Kutusu - Tasarruf Sorunu

Amacım basitti - etiketleri ya da onay kutularını kullanmak yerine basit bir açılan taksonomi terimleri listesi içeren özel bir meta kutucuğu olan özel bir yazı tipi oluşturmaktı. Bunun nedeni, editörün taksonomi listesinden sadece bir terim seçebilmesini sağlamaktı.

Deneme ve hata sonrası nihayet WP-Alchemy'den (http://farinspace.com/wpalchemy-metabox/) kullandığım mükemmel metabox oluşturma araçlarını kullanmanın bir yolunu bulmayı başardım. açılır listedeki terimler.

Sahip olduğum sorun, seçilen değeri kaydetmek için açılır menüden yeni bir seçim elde edemem gibi görünüyor.

Açık olmak gerekirse ... bu özel yazı tipinde her bir gönderiyle yalnızca bir terimin ilişkilendirilmesi önemlidir; bu, aşağı açılır menüden farklı bir değer seçildiğinde ve gönderinin kaydedildiğinde önceki seçimin kaydedilmemesini sağlamak için gerekli olması anlamına gelir.

Daha önce de belirtildiği gibi, şu anda bir açılır menüde terimlerin listesini görüntülemesini sağladım ve aynı zamanda hangi terim ile ilişkilendirilebileceğini de doğru gösteriyorum.

Sadece yeni değerlerin kaydedilmesi, sorun yaşadığım yer.

Kapsamlı araştırmalardan, çözüm burada daha detaylı olarak açıklandığı gibi "wp_set_post_terms" kelimelerinin kullanıldığı "press "gibi görünüyor: http://codex.wordpress.org/Function_Reference/wp_set_post_terms Ancak nasıl doğru kullanılacağından emin değilim. İstediğim sonucu elde etmek için.

Aşağıda kullanıyorum kodu dahil ettik. Bunu yapmanın daha iyi bir yolu var ve sizin için olabilecek her türlü önerinin, yetkili olmayan kullanıcılar tarafından veri eklenememesini sağlamak için uygulanabilir "kontrollerin" yapıldığından emin olabilirsiniz.

FONKSİYONLAR.PHP DOSYA (ÖZEL OLUŞTURUNU GÖSTEREN POST AŞAĞIDAKİ TİP VE TAKSONOMİ.

//////////////////////////////////////////////////////////////////////////////
// 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
   )
 ));
}

BURAYA IS TAKSONOMİYE KAYIT OLDUĞUM NEREDE

// 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');

BU IS WPALECHEMY TABANLI METABOX OLUŞTURMA FONKSİYONLAR DOSYASINDA KULLANIM KODUNU VE KODU Bu denemede, 'save_filter' => "wp_set_post_terms ($ post-> ID, 'tema')" 'yu ​​dahil etmeye çalıştım, umarım bu uygulanabilir verileri kurtarabilirdi.

// 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
    ));

SADECE DIMAS ÜZERİNE HİÇBİR OLMALIYIM AT WPALECHMEY SADECE YUKARI KODUNA AİTTİRMEK İÇİN GITHUB'UN VERSİYONU

'save_filter' => "custom-function", 

Bu kod, özel bir işlev oluşturmanıza izin verir veya sanırım yayınlama düğmesine basıldığında yürütülen özel bir işlevi çağırın; bu nedenle verileri kaydetmenin en iyi yolu bu olabilir mi?

Her durumda, taksonomi terimlerini görüntüleyen açılan listeyi görüntülemek için özel meta kutusunun aşağıdaki kodunu kullanıyorum.

<?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>

Verileri kaydetmenin, pasta kadar basit olması gerektiğini düşünüyorum, ancak bunun nasıl yapılacağı konusunda kendimi karıştırıyorum.

Daha önce de belirtildiği gibi, verilerin doğru kaydedilmesini sağlamak için gerekli kontrollerin yapılmasını sağlamak için kodla ilgili önerilerde bulunup sunamayacağınızı ve sadece doğru yetkili kişiler olduğunuzu takdir ediyorum.

Şimdiden teşekkürler gerekir!

3

İlgilenen herkes için bu soruyu farklı bir gönderide cevapladım:

Tasarruf Taksonomisi Şartları

1