web-dev-qa-db-fra.com

Comment lister les types de post personnalisés?

Voici ce que j'aimerais faire:

a) Créez un type d'article personnalisé et un panneau d'écriture pour un élément de menu appelé "Mon article".

b) "My Stuff" se comportera comme une catégorie - mais le contenu n'apparaîtra pas dans le blog principal. Il n'apparaîtra que sous "Mes affaires".

Alors, que dois-je faire? Créer une autre boucle? Si tel est le cas, où placerais-je la deuxième boucle et comment créer un lien vers "My Stuff"?

Ou devrais-je ajouter "My Stuff" à la boucle dans index.php, créer une catégorie "My Stuff" (ou taxonomie) et filtrer "My Stuff" de façon à ce qu'il ne s'affiche que lorsque certains champs sont présents?

Toutes mes excuses pour la question compliquée, mais je trouve cela très déroutant. Aucun des didacticiels dispersés disponibles sur le sujet n'explique clairement comment afficher du contenu de type publication personnalisé ailleurs que sur une page ou en boucle.

J'apprécierais toute aide.

Merci.

2
user5486

a) Créez un type d'article personnalisé et un panneau d'écriture pour un élément de menu appelé "Mon article".

Simple. Le Codex devrait vous dire tout ce que vous devez savoir.

Mais voici un autre exemple:

add_action( 'init', 'wpse_17863' );

/**
 * Creates a visible post type.
 *
 * Don’t forget to visit wp-admin/options-permalink.php once to refresh 
 * the rewrite rules!
 *
 * @return void
 */
function wpse_17863()
{
    $labels = array (
        // Usually plural.
        'name'               => 'Stuffies'
    ,   'singular_name'      => 'Stuffy'
    ,   'add_new'            => 'New Stuff'
    ,   'add_new_item'       => 'Add New Stuff'
    ,   'edit_item'          => 'Edit Stuffy'
    ,   'new_item'           => 'New Stuffy'
    ,   'view_item'          => 'View Stuffy'
    ,   'search_items'       => 'Search Stuffies'
    ,   'not_found'          => 'No Stuffies found'
    ,   'not_found_in_trash' => 'No Stuffies found in Trash'
    ,   'parent_item_colon'  => 'Parent Stuffy:'
    );

    register_post_type(
        'stuffy'
    ,   array (
            // visible
            'public'        => TRUE
            // Menu main name, usually plural
        ,   'label'         => 'Stuffies'
            // All labels
        ,   'labels'        => $labels
            // Menu position
            //   5 - below Posts
            //  10 - below Media
            //  15 - below Links
            //  20 - below Pages
            //  25 - below comments
            //  60 - below first separator
            //  65 - below Plugins
            //  70 - below Users
            //  75 - below Tools
            //  80 - below Settings
            // 100 - below second separator
        ,   'menu_position' => 5
            // permalinks
        ,   'rewrite' => array ( 'slug' => 'stuff' )
            // Create a default archive at /stuff/
        ,   'has_archive'   => TRUE
            // Allow child pages.
        ,   'hierarchical'  => TRUE
        // Add it to custom menus
        ,   'show_in_nav_menus'   => TRUE
        // Components of the editor.
        ,   'supports' => array (
                'editor'
            ,   'excerpt' 
            ,   'page-attributes'
            ,   'thumbnail'
            ,   'title'
             )
        // We use the built-in taxonomies too.
        ,   'taxonomies'          => array ( 'category', 'post_tag' )
        )
    );
}

b) "My Stuff" se comportera comme une catégorie - mais le contenu n'apparaîtra pas dans le blog principal. Il n'apparaîtra que sous "Mes affaires".

Je ne comprends pas cette partie. Un type de message personnalisé peut utiliser une taxonomie - j'ai ajouté des catégories et des balises dans mon exemple pour une démonstration - mais ce n'en est pas un. Vous pouvez utiliser des relations parent-enfant difficiles, comme avec des pages.
Si vous avez clarifié ce point dans votre question, je pourrai peut-être mettre à jour ma réponse.

Aucun des didacticiels dispersés disponibles sur le sujet n'explique clairement comment afficher du contenu de type publication personnalisé ailleurs que sur une page ou en boucle.

Le paramètre 'has_archive' est plutôt nouveau . Les tutoriels plus anciens peuvent ne pas en parler.
Pour lier vos nouvelles archives dans des thèmes ou des plugins, utilisez get_post_type_archive_link( 'stuffy' ) .

1
fuxia

Je devais juste faire quelque chose de similaire. Ma solution a été de créer un fichier modèle PHP, puis de créer une page utilisant ce modèle. Dans le modèle se trouvait un WP_Query pour créer la boucle.

En haut du fichier modèle:

<?php /* Template Name: <template name> */ ?>

et dans le fichier modèle:

$args=array('post_type' => 'my_stuff', 'posts_per_page' => 10);
$loop = new WP_Query( $args );
while ($loop->have_posts()) : $loop->the_post();

Ensuite, j'ai créé une page et dans les attributs, j'ai sélectionné le nom du modèle dans la liste.

0
Chris