web-dev-qa-db-fra.com

Comment puis-je ajouter un widget/une liste déroulante à la page de publication de l'administrateur?

J'essaie de comprendre comment ajouter un widget déroulant à la page de publication. La raison pour laquelle je pose cette question est parce que j'aimerais pouvoir avoir plusieurs classes de publication différentes que l'utilisateur peut sélectionner tout en créant une publication qu'il peut sélectionner.

Je pense que je peux utiliser post_class et définir quelques classes différentes et permettre à l'utilisateur de l'utiliser comme modèle de publication.

Quelqu'un l'a-t-il déjà fait et pourrait-il me guider dans la bonne direction?

3
user1632018

Comme cela ressemble beaucoup aux formats de publication (voir post-formats ), j'utiliserais une taxonomie personnalisée.

Cela facilite le contrôle du niveau d'accès et vous obtenez la méta-boîte sans écrire de code supplémentaire.

enter image description here

Ensuite, vous insérez les nouvelles classes de publication avec un simple filtre. Votre thème doit utiliser la fonction post_class() - bien sûr.

Exemple:

<?php # -*- coding: utf-8 -*-
/* Plugin Name: Post Class Taxonomy */

add_action( 'wp_loaded', 'register_post_class_taxonomy' );

function register_post_class_taxonomy()
{
    $caps = array(
        'manage_terms' => 'manage_options',
        'edit_terms'   => 'manage_options',
        'delete_terms' => 'manage_options',
        'assign_terms' => 'edit_others_posts',
    );

    $labels = array(
        'name'                       => 'Post Classes',
        'singular_name'              => 'Post Class',
        'search_items'               => 'Search Post Classes',
        'popular_items'              => 'Popular Post Classes',
        'all_items'                  => 'All Post Classes',
        'edit_item'                  => 'Edit Post Class',
        'view_item'                  => 'View Post Class',
        'update_item'                => 'Update Post Class',
        'add_new_item'               => 'Add New Post Class',
        'new_item_name'              => 'New Post Class',
        'separate_items_with_commas' => 'Separate Post Classes with commas',
        'add_or_remove_items'        => 'Add or remove Post Classes',
        'choose_from_most_used'      => 'Choose from the most used Post Classes',
    );
    $args = array (
        'rewrite'           => FALSE,
        'public'            => FALSE,
        'show_ui'           => TRUE,
        'labels'            => $labels,
        'capabilities'      => $caps,
        'show_in_nav_menus' => FALSE,
    );
    register_taxonomy( 'post_classes', 'post', $args );
}

add_filter( 'post_class', 'insert_custom_post_classes' );

function insert_custom_post_classes( $classes, $class = '', $post_ID = NULL )
{
    NULL === $post_ID && $post_ID = get_the_ID();

    $post = get_post( $post_ID );

    if ( ! is_object_in_taxonomy( $post->post_type, 'post_classes' ) )
        return $classes;

    if ( ! $post_classes = get_the_terms( $post_ID, 'post_classes' ) )
        return $classes;

    foreach ( $post_classes as $post_class )
        if ( ! empty ( $post_class->slug ) )
            $classes[] = 'post-class-' . esc_attr( $post_class->slug );

    return $classes;
}
2
fuxia

Vous pouvez utiliser meta box pour ajouter box dans la page de publication de l’administrateur et utiliser post_class filter pour l’utiliser en face avant.

1
Vinod Dalvi