web-dev-qa-db-fra.com

Attribuer des publications à des termes de taxonomie plutôt que des termes de taxonomie à des publications?

J'ai donc un type de message personnalisé (personnes) avec une taxonomie personnalisée (répertoire) associée. Au lieu de modifier une personne, puis de choisir les organisations de répertoires associées, j'aimerais "modifier" une organisation de répertoire et choisir les personnes qui en font partie. Quelqu'un sait d'un plugin qui permet cela?

Je pourrais construire mon propre plugin avec une interface pour le faire - chercher des opinions ici. Penser à faire quelque chose comme:

<?php
//Get all directory orgs                  
$orgs = get_terms("directory");
$count = count($orgs);
$orgtermids = array();
$peopleByOrg = array();
if ( $count > 0 ){
   foreach ( $orgs as $org ) {
     $orgtermids[] = $org->term_id; //Build array of term_ids
     $peopleByOrg[$org->term_id] = array(); //Build an empty array() for each term_id
   }
}
//Get all people currently associated with a directory org 
$myquery['tax_query'] = array(
    array(
        'taxonomy' => 'directory',
        'terms' => $orgtermids,
        'field' => 'term_id',
    )
);
query_posts($myquery);

if (have_posts()) : while (have_posts()) : the_post();
  $postOrgs = get_the_terms($post->ID, 'directory'); //Get directory orgs for this person
  if ( $postOrgs && ! is_wp_error( $postOrgs ) ) { 
    foreach ( $postOrgs as $postOrg ) {
      $peopleByOrg[$postOrg->term_id][$post->ID] = $post; //Store person info with each org it belongs to
    }
  }   
endwhile;
endif;

//Step through and create interface to choose additional people for each directory org
//code TBD  
?>

Des idées ou des opinions?


Je viens de penser à un meilleur moyen de le faire en étendant la classe Walker avec une nouvelle classe basée sur Walker_Category. Il faudrait que je modifie cela pour créer un formulaire où des personnes pourraient être assignées à des organisations de répertoires au lieu d'être affichées sous forme de liste (les organisations de répertoires sont hiérarchiques).

6
Brad Trivers

Je pense que le plugin "Featured Post Manager" sera plus proche de ce que vous recherchez:

http://wordpress.org/extend/plugins/featured-post-manager/screenshots/

Le langage utilisé est quelque peu déroutant et peut ne pas fonctionner pour les taxonomies personnalisées (répertoires) ou les types personnalisés (personnes), MAIS vous pouvez probablement prendre le code et le personnaliser pour qu'il fonctionne pour ces classes d'éléments, ainsi que pour mettre à jour le langage. utilisé sur la page.

Il s’agit principalement d’un fichier PHP, vous devez donc consulter le code ( http://plugins.trac.wordpress.org/browser/featured- post-manager/trunk/fpmngr.php ) et remplacez quelques éléments de "category" par "directory" (ligne 81) et "post" par "person/people" (ligne 108). ), etc.

1
mltsy

J'espère que je comprends bien votre question ici. Mais, si je comprends bien, vous aimeriez avoir la possibilité de sélectionner un nombre quelconque de types de publication personnalisés sur l’écran de modification de la taxonomie.

Vous voudrez peut-être jeter un coup d'œil au plugin Advanced Custom Fields de Elliot Condon. Le plugin propose un type de champ "Relation" qui pourrait être exactement ce que vous recherchez. Le champ Relation vous permet de sélectionner un nombre quelconque de messages à associer au terme. Un seul champ ou un groupe de champs personnalisés peut être appliqué à une taxonomie spécifique (plutôt qu'à une page de post-édition) si vous le souhaitez.

0
Philip Downer