Come creo un post in evidenza all'interno di un custom post type?

21 feb 2011, 17:12:25
Visualizzazioni: 15K
Voti: 3

Devo farlo esattamente nello stesso modo in cui lo farei con i post normali? Uso una variabile globale $featured_cat e la estraggo. Dovrei fare lo stesso qui?

O dovrei usare una tassonomia personalizzata associata? O forse sto complicando troppo le cose? Ci sarebbe davvero un vantaggio con le tassonomie?

Qual è l'approccio giusto qui, ragazzi?

2
Commenti

Puoi modificare la tua domanda e chiarire cos'è la tua variabile $global_cat? L'ID di una categoria specifica chiamata "Featured"?

Jan Fabry Jan Fabry
21 feb 2011 17:22:22

no-no..in functions.php uso una variabile globale chiamata $featured_cat per impostare una sola categoria in evidenza. In realtà è un'informazione banale da parte mia perché tutto quello che voglio davvero sapere è come impostare un post in evidenza all'interno di una serie di contenuti di custom post type.

Amit Erandole Amit Erandole
21 feb 2011 17:30:55
Tutte le risposte alla domanda 2
0

Registra un tipo di post video e una "Tassonomia Featured" "Casella di selezione Meta Personalizzata Featured"

Il tipo di post:

function c3m_reg_vid_post() {
            
              $labels = array(
                'name' => _x('Video', 'nome generale del tipo di post'),
                'singular_name' => _x('Video', 'nome singolare del tipo di post'),
                'add_new' => _x('Aggiungi Nuovo', 'video'),
                'add_new_item' => __('Aggiungi Nuovo Video'),
                'edit_item' => __('Modifica Video'),
                'new_item' => __('Nuovo Video'),
                'view_item' => __('Visualizza Video'),
                'search_items' => __('Cerca Video'),
                'not_found' =>  __('Nessun video trovato'),
                'not_found_in_trash' => __('Nessun video trovato nel Cestino'), 
                'parent_item_colon' => ''
              );
              $args = array(
                'labels' => $labels,
                'public' => true,
                'publicly_queryable' => true,
                'show_ui' => true, 
                'query_var' => true,
                'show_in_nav_menus' => true,
                'can_export' => true,
                'rewrite' => array('slug' => 'video', 'with_front' => false),
                'capability_type' => 'post',
                'register_meta_box_cb' => 'c3m_video_meta', //Questo è per la nostra meta box personalizzata
                'hierarchical' => false,
                'menu_position' => 10,
               'taxonomies' => array('featured'),
                'supports' => array('title', 'editor' 'custom-fields')
              ); 
              register_post_type('video', $args );
}

###La Tassonomia

Ripensandoci, usiamo un campo personalizzato per il video featured e creiamo una casella di selezione a discesa con meta box personalizzata per scegliere se il post è featured.

Configura la meta box personalizzata:

//hook per aggiungere una meta box
add_action( 'add_meta_boxes', 'c3m_video_meta' );

function c3m_video_meta() {
    //crea una meta box personalizzata
    add_meta_box( 'c3m-meta', 'Selettore Video Featured', 'c3m_mbe_function', 'video', 'normal', 'high' );
}

function c3m_mbe_function( $post ) {

    //recupera i valori dei meta dati se esistono
    $c3m_mbe_featured = get_post_meta( $post->ID, '_c3m_mbe_featured', true );

    echo 'Seleziona sì sotto per rendere il video featured';
    ?>
    <p>Featured: 
    <select name="c3m_mbe_featured">
        <option value="No" <?php selected( $c3m_mbe_featured, 'no' ); ?>>No Grazie</option>
        <option value="Yes" <?php selected( $c3m_mbe_featured, 'yes' ); ?>>Sì, Featured Questo Video</option>
    </select>
    </p>
    <?php
}

//hook per salvare i dati della meta box
add_action( 'save_post', 'c3m_mbe_save_meta' );
function c3m_mbe_save_meta( $post_ID ) {
    global $post;
    if( $post->post_type == "video" ) {
        if ( isset( $_POST ) ) {
            update_post_meta( $post_ID, '_c3m_mbe_featured', strip_tags( $_POST['c3m_mbe_featured'] ) );
        }
    }
}

}

Ecco il nostro simpatico selettore di video featured appena creato: Selettore video featured in WordPress

Ora eseguiamo una query per i video post che sono featured:

$args = array(
    'post_type' => 'video',
    'meta_query' => array(
        array(
            'key' => 'c3m_mbe_featured',
            'value' => 'yes',
            'compare' => 'NOT LIKE'
        )
    )
 );
$query = new WP_Query( $args );
23 apr 2011 08:42:28
3

Come per qualsiasi altro tipo di post, in realtà... puoi usare una categoria... o qualsiasi altro metodo preferisci (tag, tassonomia personalizzata, metadati/campi personalizzati,...).

21 feb 2011 17:42:48
Commenti

Capisco, ma mi piacerebbe vedere un esempio che utilizza una tassonomia personalizzata per un custom post type di video.

qualcuno?

Amit Erandole Amit Erandole
21 feb 2011 18:01:32

Credo che i "Post sticky" non siano supportati per i custom post type. Almeno questo ticket rilevante è stato annullato.

Jan Fabry Jan Fabry
21 feb 2011 18:18:12

@Ian Fabry hai ragione, ho modificato la risposta.

wyrfel wyrfel
22 feb 2011 05:56:18