J'ai un site Web que nous construisons avec 1600 "Business Listings" qui sont créés en tant que types de messages personnalisés. Notre problème est que, s'il ne doit y avoir qu'un seul "éditeur" pour chaque poste/entreprise, il y a parfois plus d'un utilisateur (employés) associé au poste/à l'entreprise.
La principale raison à cela est le regroupement des utilisateurs avec certaines entreprises, qui s’utilise à son tour pour les newsletters, ainsi que pour les coordonnées globales (uniquement visibles dans le backend des administrateurs).
ALORS. Est-il possible d'associer plusieurs utilisateurs à un message? En gros, le client veut pouvoir accéder au profil de l'entreprise (poste personnalisé) et voir tous les employés attachés à cette entreprise.
Pensées? Plusieurs auteur-post-plugin ou pirater nous pouvons faire?
À moins que tous ces employés aient besoin de se connecter à Wordpress, il peut être plus logique d'implémenter les employés en tant que type de publication personnalisé (a.k.a. CPT). Une fois qu’ils sont définis comme un CPT, vous associez ensuite un employé à une entreprise.
Comme @swisspedy l'a mentionné dans son commentaire, une façon de faire est d'utiliser le plugin Posts 2 Posts . Même si un fan de Posts 2 Posts moi-même, le fait qu'il nécessite du code d'édition pour définir ces relations ne soit pas souhaitable. Le plugin Types vous permet de gérer les relations CPT à partir du tableau de bord, mais ses fonctionnalités laissent à désirer.
Une fois que vous avez configuré le CPT employé (dans le code, via le plug-in Types ou une autre méthode), vous devez définir la relation entre les CPT entreprise et employé. J'ai trouvé des champs personnalisés avancés dotés de fonctionnalités robustes et d'une interface très conviviale. Cela vous aidera non seulement à définir la relation, mais vous permettra également de personnaliser comment/où le sélecteur d'employés apparaît sur l'écran "Modifier le système". (D'autre part, le plug-in Types vous permet de créer des employés à la volée à partir de l'écran "Modifier le commerce", en entrant simplement le nom de l'employé).
Voici un exemple de code que vous placeriez dans functions.php
pour ce faire avec le plugin Posts 2 Posts:
// Create business/employee relationship
add_action( 'p2p_init', 'register_p2p_connections' );
function register_p2p_connections(){
p2p_register_connection_type(
array(
'name' => 'business_to_employee',
'from' => 'business',
'to' => 'employee',
'title' => array(
'from' => 'Employees',
'to' => 'Employer'
),
'admin_column' => 'to',
'admin_dropdown' => 'to',
'fields' => array(
'title' => array(
'title' => 'Position',
'default' => ''
))));
}
// Auto-publish posts created via P2P box are drafts (they default as drafts).
add_filter( 'p2p_new_post_args', 'p2p_published_by_default', 10, 2 );
function p2p_published_by_default( $args, $ctype ) {
$args['post_status'] = 'publish';
return $args;
}
Pour répertorier les employés qui consultent un poste dans une entreprise, dans le modèle single-business.php
, vous ajoutez du code comme celui-ci:
// Find connected employee
$connected = new WP_Query( array(
'connected_type' => 'business_to_employee',
'connected_items' => get_queried_object(),
'nopaging' => true,
) );
// Display connected employees
if ( $connected->have_posts() ) : ?>
<h3>Employees:</h3>
<ul>
<?php while ( $connected->have_posts() ) : $connected->the_post(); ?>
<li><?php
the_title();
$position = p2p_get_meta( $post->p2p_id, 'position', true );
echo ( empty($position) ? '' : ", $position" );
?></li>
<?php endwhile; ?>
</ul><?php
endif;
// Restore original (business) post data
wp_reset_postdata();