Fusionner deux types de publication personnalisés en une seule page d'administration?


9

Je crée un site avec 4 types de messages personnalisés. Pour faciliter les choses pour notre client / administrateur, je me demande s'il existe un moyen de fusionner ces types de messages personnalisés en une seule liste dans le backend? Comme si vous regardez la page d'administration backend normale avec la liste et les colonnes des messages, une page comme celle-ci peut-elle extraire 3 autres types de messages pour un tri / recherche facile?

Je ne peux pas combiner les CPT en un seul, ils doivent rester séparés en dehors d'une page de "visualisation" dans la zone d'administration si possible.

Des idées sur la façon de faire cela?? Ou même par où commencer à chercher / réfléchir à la façon de développer cela?


1
Vous pourriez peut-être envisager d'utiliser 1 CPT, puis créer une taxonomie personnalisée avec 2 termes séparant les messages dans le CPT unique. Vous pouvez ensuite faire un peu de logique en haut des fichiers de modèles frontaux pour envoyer les visiteurs vers un autre modèle basé sur les termes / taxes
Sy Holloway

Réponses:


2

Ce n'est qu'un point de départ, car des problèmes surgiront certainement au cours du développement. Par exemple, en ce moment, la fonctionnalité de recherche se casse car elle attend une chaîne (post_type) et reçoit un tableau.

Pour répertorier plus d'un type de publication dans l'écran Messages, nous accrochons pre_get_postset modifions la requête. Dans ce test, les publications, les pages et les produits seront affichés ensemble dans l'écran des publications ( http://example.com/wp-admin/edit.php).

add_action( 'pre_get_posts', 'join_cpt_list_wspe_113808' );

function join_cpt_list_wspe_113808( $query ) 
{
    // If not backend, bail out
    if( !is_admin() )
        return $query;

    // Detect current page and list of CPTs to be shown in Dashboard > Posts > Edit screen
    global $pagenow;
    $cpts = array( 'post', 'page', 'product' );

    if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'post' == get_query_var('post_type') ) )
        $query->set( 'post_type', $cpts );

    return $query;
}

Un code d'aide pour afficher une colonne avec chaque message Type de message:

add_filter( 'manage_edit-post_columns', 'add_cpt_column_wspe_113808' );
foreach( array( 'post', 'page', 'product' ) as $cpt )
    add_action( "manage_{$cpt}_posts_custom_column", 'show_cpt_column_wspe_113808', 10, 2 );

function add_cpt_column_wspe_113808( $columns ) 
{
    $columns[ 'cpt' ] = 'Post Type';
    return $columns;
}

function show_cpt_column_wspe_113808( $column_name, $post_id ) 
{
    if ( 'cpt' != $column_name )
        return;
    echo get_post_type( $post_id );
}

0

Je recommanderais Admin Menu Editor pro pour cela. Je vais y faire un lien en bas.

Intéressant. Sur un certain projet sur lequel je travaillais, j'avais plusieurs CPT (types de messages personnalisés) qui étaient en quelque sorte liés. La section était «Info Center» et ils voulaient que les communiqués de presse, les livres blancs, les témoignages, etc. soient dans l'Info Center. Sur le front-end, créer cela était facile. Sur le back-end, nous voulions qu'il soit logiquement compatible également. La plupart des types de publication personnalisés ont été définis comme CPT en raison du contenu spécifique (métafichiers) et des exigences de mise en page. Nous avons fini par avoir, comme, près de 20 CPT.

Cela dit, nous avons utilisé le plug-in de l'éditeur d'administration pour supprimer les CPT Info Center associés du menu principal, puis créé un menu 'Info Center' avec les liens CPT associés. Bien qu'ils semblaient tous combinés, ils ne l'étaient pas.

Voici le lien du plugin: http://adminmenueditor.com/ essayez également la démo.


Comment avez-vous créé le lien "Info Center"?
2014
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.