2010-03-26 4 views
0

Dans WordPress, l'éditeur post contient un panneau Catégories qui vous permet d'attribuer des catégories aux publications. Cependant, l'éditeur page n'a pas de panneau Catégories. Je suis sûr que c'est par conception, mais j'ai besoin d'un ensemble modifié d'éléments de catégorie pour être disponible pour les pages.WordPress: ajouter un gestionnaire de catégories personnalisé à l'éditeur * PAGE *

J'ai trouvé que je peux ajouter la ligne de code ci-dessous pour mon fichier functions.php de thème afin d'ajouter le sélecteur de catégories manquantes à l'éditeur de page ...

add_action('admin_menu', 'my_post_categories_meta_box'); 
function my_post_categories_meta_box() { 
    add_meta_box('categorydiv', __('Categories'), 'post_categories_meta_box', 'page', 'side', 'core'); 
} 

Cependant, je d aime spécifier les catégories qui devraient apparaître dans ce menu. Je ne veux pas qu'il liste toutes les catégories disponibles, seulement celles que je choisis d'inclure. Est-ce possible?

Sinon, comment ajouter un widget qui fait essentiellement la même chose (fournit une liste d'éléments avec des cases à cocher à côté d'eux)?

Répondre

0

Comment allez-vous attribuer une catégorie à une page? Wordpress ne prend pas en charge nativement les catégories de pages. Vieux plugin qui pourrait fonctionner: http://www.megaupload.com/?d=CLBDY6U0

+0

Si vous implémentez le code que je posté ci-dessus, vous verrez maintenant un sélecteur de catégorie lors de l'édition d'une page, exactement comme vous le faites lors de l'édition d'un poste. Vous pouvez assigner des catégories aux pages et exécuter le code conditionnel contre elles. Le point de ma question est de savoir comment prédéfinir et limiter les catégories qui apparaissent dans le widget. –

1

Le meilleur moyen est de créer votre propre méta-box dans la fenêtre de l'éditeur, puis de filtrer les catégories ou de définir celles que vous voulez afficher manuellement. Pour obtenir un tableau de catégories est simple utiliser wordpress 'get_categories fonction pour obtenir un tableau de catégories, puis si vous voulez supprimer certaines des options puis juste unset à partir de ce tableau.

Ceci est un court extrait de ce que j'ai placé dans mes fonctions.php, essentiellement lié à mon propre fichier php qui contenait du code pour sélectionner une catégorie, puis l'enregistrer.

Cette première montre comment créer votre section d'édition personnalisée.

add_action('admin_menu', 'custom_admin'); 
/* Adds a custom section to the "side" of the post edit screen */ 
function custom_admin() { 
    add_meta_box('category_selector', 'Settings', 'category_custom_box', 'post', 'side', 'low'); 

/* prints the custom field in the new custom post section */ 
function category_custom_box() { 
    //get post meta values 

    global $post; 
    //$currentCat gets the pages current category id 
    $currentCat = wp_get_post_categories($post->ID); 

    //Do your printing of the form here. 
} 

Ensuite, pour enregistrer la catégorie, créez une nouvelle fonction et ajoutez-la au crochet 'save_post'.

/* when the post is saved, save the custom data */ 
function save_postdata($post_id) { 
     // verify this with nonce because save_post can be triggered at other times 
     if (!wp_verify_nonce($_POST['customCategory_noncename'], 'customCategory')) return $post_id; 

     // do not save if this is an auto save routine 
     if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id; 

     //get the category and set it 
     $custom_category = $_POST['custom_category']; 
     wp_set_post_categories($post_id, array($custom_category)); 

... 
} 

La valeur nonce est juste une chaîne aléatoire pour vérifier que la session est valide, ce qui évite la concurrence, pour faire un ajouter ceci à votre formulaire,

<input type="hidden" name="customCategory_noncename" id="customCategory_noncename" value="<?= wp_create_nonce('customCategory'); ?>" /> 

Désolé la quantité de code , j'ai essayé de l'amincir autant que possible.

Hope this helps :)

Questions connexes