Question

Mon but était simple --- pour créer un type de poste personnalisé avec un METABOX personnalisé avec une simple goutte dans la liste déroulante des termes de taxonomie au lieu d'utiliser les balises ou les cases à cocher. La raison était de faire en sorte que l'éditeur ne peut sélectionner un seul terme de la liste de taxonomie.

Après tâtonnement j'ai finalement réussi à trouver un moyen d'utiliser les excellents outils de création de METABOX J'utilise de WP-Alchemy (http://farinspace.com/wpalchemy-metabox/) pour créer mon METABOX et avoir afficher les conditions applicables dans une liste déroulante.

Le problème que j'ai est que je ne peux pas sembler obtenir une nouvelle sélection dans le menu déroulant pour enregistrer la valeur sélectionnée.

Pour être clair ... il est important qu'un seul terme est associé à chaque poste dans ce type de poste personnalisé qui signifie que chaque fois qu'une valeur différente est sélectionnée dans le menu déroulant et le poste est enregistré, il doit veiller à la sélection précédente est non enregistré.

Comme je l'ai mentionné ai actuellement, il affiche la liste des termes dans un menu déroulant et je dois aussi afficher correctement le terme que pourrait être associé.

Juste la sauvegarde des nouvelles valeurs est là où j'ai des problèmes.

De nombreuses recherches, il « semble » comme la solution consiste à utiliser les « wp_set_post_terms » wordpress fonctions est expliquée ici: http://codex.wordpress.org/Function_Reference/wp_set_post_terms Cependant, je ne suis pas sûr comment l'utiliser correctement pour atteindre mon résultat souhaité.

Ci-dessous j'inclure le code que je suis en utilisant. Il est très possible qu'il y ait une meilleure façon de le faire et j'apprécierait ce que les suggestions les gars pourraient vous assaillir également veiller à ce que les « contrôles » applicables sont en cours pour assurer que les données ne peuvent pas être insérées par les utilisateurs qui ne sont pas autorisés.

fichier functions.php (SPECTACLES LA CRÉATION DE LA MESURE POST TYPE ET TAXONOMIE CI-DESSOUS.

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

VOICI OÙ JE SUIS REGISTERING JE SUIS LA TAXONOMIE ESSAYER AU TRAVAIL AVEC

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

C'EST LE RESTE DU CODE I AM UTILISATION DANS LE FICHIER DES FONCTIONS ET DU CODE DE CRÉER LE METABOX OFF WPALECHEMY BASE. Dans cette tentative, j'ai essayé d'inclure « save_filter » => « wp_set_post_terms (post-$> ID, « thème ») », avec l'espoir cela permettrait d'économiser les données applicables, mais il n'a pas fait.

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

Je tiens également à noter QUE DIMAS OVER WPALECHMEY AJOUTS CERTAINS NOUVEAU CODE DANS SA VERSION DE 1.3.2 GitHub QUI PERMET LE CODE CI-DESSUS A INCLURE

'save_filter' => "custom-function", 

Ce code vous permet de créer une fonction personnalisée ou je suppose appeler une fonction personnalisée qui est exécuté après avoir heurté le bouton de publication alors peut-être qui est la meilleure façon d'enregistrer les données?

Dans tous les cas, je suis en utilisant le code suivant pour le METABOX personnalisé pour afficher la liste déroulante réelle affichant les termes de taxonomie.

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

Je suppose l'enregistrement des données doit être simple comme bonjour, mais je suppose que je me confonds sur la façon d'y parvenir.

Comme mentionné, je vous serais reconnaissant si vous pouvez également fournir des suggestions sur le code pour assurer que toutes les vérifications nécessaires sont prises pour assurer que les données sont enregistrées correctement et seulement les personnes autorisées correctement.

doit merci à l'avance!

Était-ce utile?

La solution

Pour toute personne intéressée, je répondu à cette question sur un autre poste:

Conditions d'économie Taxonomie

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top