Comment obtenir le type de publication personnalisé à partir d'une page d'archive?

4

Sur mon site Web, j'ai trois types de publications personnalisées: les scripts, les scènes et les plug-ins. Lorsque vous visitez la page d'archives d'un type de publication unique (c'est-à-dire en allant sur mysite.com/plugins), vous voyez correctement toutes les publications de ce type.

Dans le fichier archive.php, comment puis-je savoir quel type de message personnalisé l'utilisateur recherche actuellement?

J'ai essayé les solutions suivantes:

<?php 
    global $post; 
    $postTypeLabels = get_post_type_labels(get_post_type_object($post)); 
    echo var_export($postTypeLabels); 
?>

Mais je reçois ceci:

Post name is stdClass::__set_state(
  array( 'name' => 'Posts', 
    'singular_name' => 'Post', 
    'add_new' => 'Add New', 
    'add_new_item' => 'Add New Post', 
    'edit_item' => 'Edit Post', 
    'new_item' => 'New Post', 
    'view_item' => 'View Post', 
    'search_items' => 'Search Posts', 
    'not_found' => 'No posts found.', 
    'not_found_in_trash' => 'No posts found in Trash.', 
    'parent_item_colon' => NULL, 
    'all_items' => 'All Posts', 
    'menu_name' => 'Posts', 
    'name_admin_bar' => NULL, 
  )
)

Je suppose que, puisque je suis dans une page d'archive, le $ post n'est pas correct.

P.S. Je sais que je peux créer archive-plugins.php pour l'archive des plugins. Malheureusement, j'ai installé un thème qui, autant que je sache, l'empêche un peu. Donc, ce n'est pas une option.

    
posée pek 17.03.2013 - 20:02

4 réponses

5

Il existe plusieurs façons de procéder. Mettez:

var_dump($wp_query->query,get_queried_object()); die;

Dans votre archive.php , vous devriez voir deux de ces façons.

$wp_query->query aura post_type composant pour les types de publication personnalisés. Cela ne sera pas là pour post post types. get_queried_object retournera pas mal de données pour les types de publication personnalisés mais NULL pour post type de publication.

Il existe également des balises de modèles associées qui pourraient vous aider. is_post_type_archive vient à l’esprit.

Entre ceux-ci, vous devriez avoir les informations dont vous avez besoin pour rassembler toute la logique dont vous avez besoin. Vous ne savez pas ce que le résultat final est supposé être clair, je ne peux donc pas écrire grand-chose.

Puisque vous avez spécifiquement nommé archive.php , c'est ce que j'ai testé. Vous aurez peut-être besoin de code différent pour un autre modèle, en particulier avec get_queried_object qui renvoie des informations très différentes selon le contexte.

    
réponse donnée s_ha_dum 17.03.2013 - 20:36
1

Voici la fonction que vous souhaitez:

/**
 * Get the current archive post type name (e.g: post, page, product).
 *
 * @return String|Boolean  The archive post type name or false if not in an archive page.
 */
function get_archive_post_type() {
    return is_archive() ? get_queried_object()->name : false;
}
    
réponse donnée Nabil Kadimi 07.12.2017 - 01:26
0

Aucune autre option intéressante que la création de modèles!

Ou l'inclusion d'un fichier de modèle lors de l'accès à cette archive de type publication personnalisée (en fonction de son URL).

Voir les liens supplémentaires pour plus d'informations:

enlace

"> wordpress - chargez un modèle basé sur l'URI

enlace

    
réponse donnée revo 17.03.2013 - 20:57
0
die(var_dump(get_taxonomy(get_queried_object()->taxonomy)->object_type));

Je pense que c'est la réponse à votre question.

Joyeux codage !!!

    
réponse donnée Vũ Trọng Quang 21.10.2016 - 11:12

Lire d'autres questions sur les étiquettes