wake-up-neo.net

Wie kann ich ein Dropdown-Widget/eine Dropdown-Box zur Admin-Post-Seite hinzufügen?

Ich versuche herauszufinden, wie ein Dropdown-Widget zur Beitragsseite hinzugefügt werden kann. Der Grund, den ich frage, ist, dass ich einige verschiedene Beitragsklassen haben möchte, die der Benutzer auswählen kann, während er einen Beitrag erstellt, den er auswählen kann.

Ich nehme an, ich kann post_class verwenden und einige verschiedene Klassen definieren und dem Benutzer erlauben, dies als Post-Vorlage zu verwenden.

Hat das schon mal jemand gemacht und könnte mich in die richtige Richtung führen?

3
user1632018

Da dies Postformaten sehr ähnlich ist (siehe Postformate ), würde ich eine benutzerdefinierte Taxonomie verwenden.

Das macht es einfach, die Zugriffsebene zu steuern, und Sie erhalten die Meta-Box, ohne zusätzlichen Code zu schreiben.

enter image description here

Anschließend fügen Sie die neuen Post-Klassen mit einem einfachen Filter ein. Ihr Theme muss natürlich die Funktion post_class() - verwenden.

Beispiel:

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

Sie können meta box verwenden, um ein Feld in die Admin-Post-Seite einzufügen, und post_class filter, um es im Front-End zu verwenden.

1
Vinod Dalvi