• Super User

    register_post_type e nuova voce nel menu admin

    Salve a tutti,
    leggendo la documentazione ho creato il seguente custom post type:

    
    
    
    function create_post_type_excursion() {  
        register_post_type('event',
    	array(
    		'labels' => array(
    			'name' => __( 'Escursioni', 'qns' ),
    			'singular_name' => __( 'Escursioni', 'qns' ),
    			'add_new' => __('Aggiungi nuovo', 'qns' ),
    			'add_new_item' => __('Aggiungi nuova escursione' , 'qns' )
    		),
            'public' => true,
            'menu_position' => 5,
            'menu_icon' => get_template_directory_uri() .'/images/admin/events-icon.png',
            'rewrite' => array(
    			'slug' => 'escursioni'
    		),
            'supports' => array( 'title','editor','thumbnail'),
    		));
    }
    
    
    add_action( 'init', 'create_post_type_excursion' );
    
    
    
    

    Adesso vorrei inserire la relativa voce nel menu admin, come dovrei procede?

    Grazie.


  • Moderatore

    Ciao, a occhio sembra che manchino delle voci.

    Prova con il seguente codice (da inserire sempre nel file functions.php del tema attivo).

    [PHP]
    add_action('init', 'register_custom_post_type_escursioni');
    function register_custom_post_type_escursioni()
    {
    $labels = array(
    'name' => 'Escursioni',
    'singular_name' => 'Escursione',
    'add_new' => 'Aggiungi nuova',
    'add_new_item' => 'Aggiungi nuova Escursione',
    'edit_item' => 'Modifica',
    'new_item' => 'Nuova Escursione',
    'view_item' => 'Vedi Escursione',
    'search_items' => 'Ricerca Escursione',
    'not_found' => 'Nessuna Escursione',
    'not_found_in_trash' => 'Nessuna Escursione nel Cestino'
    );

                   $args = array(
                   'labels' => $labels,
                   'public' => true,
                   'has_archive' => true,
                   'capability_type' => 'page',
                   'rewrite' => array('slug' => 'escursioni'),
                   'supports' => array('title', 'editor', 'thumbnail')
                   );
    
                  register_post_type('negozi', $args);
        }
    

    [/PHP]

    Così dovrebbe andare. Fammi sapere.
    Per eventuali personalizzazioni puoi fare riferimento al codex di WordPress.org: http://codex.wordpress.org/Function_Reference/register_post_type


  • Super User

    Ciao Giapox, esatto, avevo messo qualche parametro importante come 'show_ui', 'show_in_menu'.

    
    function create_post_type_excursion() {
        
        $args = array(
            'labels' => array(
                'name' => __( 'Escursioni', 'qns' ),
                'singular_name' => __( 'Escursioni', 'qns' ),
                'add_new' => __('Aggiungi nuovo', 'qns' ),
                'add_new_item' => __('Aggiungi nuova escursione' , 'qns' )
            ),
            'public'             => true,
            'publicly_queryable' => true,
            'show_ui'            => true,
            'show_in_menu'       => true,
            'menu_position'      => 5,
            'menu_icon'          => 'dashicons-location',
            'query_var'          => true,
            'rewrite'            => array( 'slug' => 'book' ),
            'capability_type'    => 'post',
            'has_archive'        => true,
            'hierarchical'       => false,
            'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
        );
    
    
        register_post_type('excursion', $args);
    }
    
    
    add_action( 'init', 'create_post_type_excursion' );
    
    

    Grazie! 😉


  • Moderatore

    Bene. 🙂


  • Super User

    Salve a tutti,
    come indicato sopra sono riuscito ad aggiungere il mio custom type.

    Ho modificato il parametro "support" con:

    
    'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt')
    
    

    perchè vorrei visualizzare l'immagine in evidenza nella riepilogo delle pagine di quel post type.

    Nel functions del mio thema ho:

    
        add_theme_support( 'post-thumbnails' );
        
        if ( function_exists( 'add_theme_support' ) ) {
            add_theme_support( 'post-thumbnails' );
            set_post_thumbnail_size( "500", "500" );  
        }
    
    

    ed io l'ho convertito in:

    
        add_theme_support( 'post-thumbnails' );
        
        if ( function_exists( 'add_theme_support' ) ) {
            add_theme_support( 'post-thumbnails', array( 'excursion' ) );
            set_post_thumbnail_size( "500", "500" );  
        }
    
    

    ma nonostrante ciò la colonne delle immagine in evidenza non viene visualizzata, come mai?

    Grazie.


  • Moderatore

    Hai controllato se l'opzione dell'immagine in evidenza è selezionata in "Impostazioni schermata"?


  • Super User

    Si, purtroppo lì vedo solo "Lingue" e "Data"...

    Il codice dovrebbe essere corretto, no?


  • Moderatore

    Ho cercato un po online, forse ti basterebbe inserire questo codice per abilitare l'immagine in evidenza sul sito:

    [PHP]
    add_theme_support('post-thumbnails');
    [/PHP]

    Evitando il resto.

    E poi, per abilitare l'immagine in evidenza sul tuo custom post type, va bene il tuo codice:

    [PHP]
    'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt')
    [/PHP]

    Così dovrebbe andare.
    Fammi sapere.


  • Super User

    Il codice che ho postato sopra, cioè:

    
    add_theme_support( 'post-thumbnails' );
        
        if ( function_exists( 'add_theme_support' ) ) {
            add_theme_support( 'post-thumbnails' );
            set_post_thumbnail_size( "500", "500" );  
        }
    
    

    è nativo del theme...

    Dici di commentare quella o modificarla?


  • Moderatore

    In realtà dicevo di commentare questa parte del codice da te aggiunta:

    [PHP]
    , array( 'excursion' )
    [/PHP]

    Anche se il tuo codice sembra corretto, io ho provato su un mio sito il codice che ti ho postato sopra e funziona.
    Quindi, dato che a te non funziona, potresti fare un tentativo con il mio. 🙂


  • Super User

    🙂 Certo, vi aggiorno questa sera...