Domanda

Il mio obiettivo era semplice --- per creare un tipo di messaggio personalizzato con un METABOX personalizzato con una semplice goccia elenco di termini di tassonomia, invece di utilizzare i tag o caselle di controllo verso il basso. Il motivo era quello di garantire che l'editore può selezionare solo un singolo termine dalla lista tassonomia.

Dopo tentativi ed errori sono finalmente riuscito a trovare un modo per utilizzare gli strumenti eccellenti per la creazione METABOX sto usando da WP-Alchemy (http://farinspace.com/wpalchemy-metabox/) per creare la mia METABOX e farlo visualizzare i termini applicabili in un elenco a discesa.

Il problema che sto avendo è che io non riesco a ottenere una nuova selezione dal menu a discesa per salvare il valore selezionato.

Per essere chiari ... è importante che solo un unico termine associare ogni post in questo tipo di inserimento personalizzato che significa che ogni volta che un valore diverso è selezionare dal menu a discesa e il post viene salvato deve garantire la selezione precedente è registrato.

Come accennato Io attualmente ho è che visualizza l'elenco di termini in un menu a discesa e ho anche correttamente la visualizzazione di qualsiasi termine potrebbero essere associati.

Proprio il salvataggio dei nuovi valori è dove sto avendo problemi.

Da numerose ricerche che "sembra" come la soluzione comporta l'uso di WordPress "wp_set_post_terms" funzioni che viene ulteriormente spiegato qui: http://codex.wordpress.org/Function_Reference/wp_set_post_terms Tuttavia non sono sicuro come utilizzarlo correttamente per raggiungere il mio risultato desiderato.

Qui di seguito ho includere il codice che sto utilizzando. E 'molto possibile che ci sia un modo migliore di fare questo e vorrei conoscere e apprezzare i suggerimenti voi ragazzi potrebbe avere potrebbe anche garantire che i "controlli" applicabili sono stato fatto per garantire che i dati non possono essere inseriti dagli utenti che non sono autorizzati.

functions.php FILE (mostra la creazione del costume POST TIPO E TASSONOMIA SOTTO.

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

Qui è dove sto registrando la tassonomia che sto cercando di lavorare con

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

Questo è il resto del codice che sto usando NEL FASCICOLO funzioni e il codice per creare Metabox basato fuori WPALECHEMY. In questo tentativo ho cercato di includere 'save_filter' => "wp_set_post_terms ($ post-> ID, 'tema')", con la speranza questo avrebbe salvato i dati applicabili, ma non lo feci.

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

I dovrebbe inoltre notare che DIMAS sopra a WPALECHMEY appena aggiunto alcune nuove CODE NELLA SUA VERSIONE 1.3.2 GitHub CHE CONSENTE IL CODICE DI CUI SOPRA per includere un

'save_filter' => "custom-function", 

Questo codice consente di creare una funzione personalizzata o di credo chiamare una funzione personalizzata che viene eseguito su di colpire il pulsante di pubblicare in modo forse questo è il modo migliore per salvare i dati?

In ogni caso, Sto utilizzando il seguente codice per la METABOX personalizzato per visualizzare l'elenco a discesa effettiva visualizzazione dei termini tassonomia.

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

Io parto dal presupposto il salvataggio dei dati dovrebbe essere semplice come torta, ma immagino che mi sto confondendo su come raggiungere questo obiettivo.

Come accennato sarei grato se potesse anche fornire suggerimenti sul codice per garantire i controlli necessari sono fatto per garantire i dati vengono salvati in modo corretto, e solo essere le persone correttamente autorizzate.

deve grazie in anticipo!

È stato utile?

Soluzione

Per chi è interessato, ho risposto a questa domanda in un altro posto:

risparmio tassonomia Termini

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top