Suppression de termes personnalisés en double taxonomie à partir d'un menu déroulant Select?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1140

  •  16-10-2019
  •  | 
  •  

Question

J'ai un type de poste personnalisé qui comprend une taxonomie personnalisée, appelée client_name. Il y a une page qui se charge ces types de postes personnalisés et affiche eux. Ce que je dois développer une liste déroulante qui affiche toute la taxonomie personnalisée de ces messages personnalisés, que je l'ai fait, mais je dois supprimer les doublons et les classer par ordre alphabétique, ce qui est là où je rencontre des problèmes.

est ce que je suis en train d'enlever les doublons (il ne fonctionne pas):

<?php
<form method="post" id="clientform" action="" onsubmit="return getURL(this.url.value)">
  <select name="url" id="client">
    <option selected="selected">By Client</option>
    <?php
      $args=array(    
        'post_type' => 'our_work',
        'post_status' => 'publish',
        'order' => 'ASC',
        'posts_per_page' => -1
      );
      $my_query = new WP_Query($args);
      $k=0;
      if( $my_query->have_posts() ) { 
        while ($my_query->have_posts()) : $my_query->the_post();
          $termArray[$k] = array (trim(get_the_term_list( $post->ID, 'client_name')));
          // $text = trim(get_the_term_list( $post->ID, 'client_name'));
          for ($i = 0; $i <= $termArray.count; $i++ ) {    
            for ($j = 0; $j <= $tempArray.count; $j++) {
              if ($tempArray[$i] == $tempArray[$j]) {        
                unset($tempArray[$k]); 
                $termArray = array_values($termArray);
              }
            } // end of for 
            $k++; 
        ?><option value="<?php bloginfo('url'); echo "/client_name/"; echo $termArray[$k]; ?>"><?php echo $termArray[$k]; ?></option><?php 
        } ?>    
        <?php 
        endwhile; 
      } 
      wp_reset_query(); 
    ?>
  </select>
  <input type="submit" id="clientsubmit" value="Search" />
</form>

Ok, maintenant je couru à travers cette fonction PHP l'autre jour et il fait ce que je veux, je sais juste ne pas comment l'utiliser correctement.

  

array_unique($input);

Aidez-moi les gars .... Notez le code ci-dessus est seulement une branche de code que je tentais, pas le fichier entier.


UPDATE

Hey cela ne me aide un peu, et je l'ai trouvé cela à l'utilisation, cela me obtient comme 95% fait, mais pas encore à 100%. J'ai essayé votre code, et j'ai essayé ce que je me sers, et il enlève, mais tout est la dup qui vient après wont afficher hmm ....

Heres le code WP:

<?php
if( $my_query->have_posts() ) { 
  while ($my_query->have_posts()) : $my_query->the_post();
    $termArray[$i] = trim(get_the_term_list( $post->ID, 'client_name'));
    $termArray = array_unique($termArray);
    $termArray = array_values($termArray);
    print_r($termArray);  
    print_r(sizeof($termArray));
    if ($termArray[$i] != '') { 
      ?><option value="<?php bloginfo('url'); echo "/client_name/"; echo $termArray[$i]; ?>"><?php echo $termArray[$i]; ?></option><?php 
    }// end of if $i++; 
  endwhile; 
} 
wp_reset_query();

Et voici la sortie du tableau, il fait double emploi avec la sortie du réseau, car il est appelé à chaque fois qu'un nouveau poste est appelé dans la boucle. La page est disponible ici:

  

http://magicvideo.com/cms/work/

Afficher la source pour voir ce que je veux dire.

Était-ce utile?

La solution

Salut @Hunter Brelsford:

Bon à vous voir ici au-dessus de la Groupe WordPress sur LinkedIn .

Peut-être que j'ai mal compris votre question, mais il semble que vous êtes essaie simplement de se débarrasser de dups dans un tableau Par exemple, supposons que vous avez un tableau de clients:

<?php
$clients = array(
  'Jones Construction',
  'Smith Wholesale',
  'Smith Wholesale',
  'Williams Dry Cleaning'
);

Et vous voulez convertir à un tableau comme celui-ci?

<?php
$clients = array(
  'Jones Construction',
  'Smith Wholesale',
  'Williams Dry Cleaning'
);

( Si oui, c'est une question de PHP et non une question de WordPress, normalement quelque chose que nous Renvoyez , mais je vais aller de l'avant et répondre ici de toute façon. )

C'est facile; puisque les clés du tableau sont uniques en PHP il suffit de retourner le tableau (échanger les valeurs avec leurs clés) renvoient alors les clés du tableau et vous aurez votre gamme unique, comme ceci:

<?php
$clients = array(
  'Jones Construction',
  'Smith Wholesale',
  'Smith Wholesale',
  'Williams Dry Cleaning'
);
print_r(array_keys(array_flip($clients)));

Ce code affiche:

Array
(
    [0] => Jones Construction
    [1] => Smith Wholesale
    [2] => Williams Dry Cleaning
)

Était-ce ce que vous étiez après?

Mise à jour:

Salut @Hunter Brelsford :

Je réponds à votre mise à jour. Ok, pourquoi ne pas essayer et attaquons ce d'une manière différente? Voici un exemple autonome, vous pouvez copier à la racine de votre site Web test.php puis exécutez comme http://magicvideo.com/test.php pour voir il fonctionne:

<?php
include "wp-load.php";
header('Content-Type:text/plain');
global $wpdb;
$sql = <<<SQL
SELECT DISTINCT
  tt.term_id
FROM {$wpdb->posts} p
  INNER JOIN {$wpdb->term_relationships} tr ON p.ID = tr.object_id
  INNER JOIN {$wpdb->term_taxonomy} tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE 1=1
  AND p.post_status='publish'
  AND p.post_type='our_work'
  AND tt.taxonomy='client_name'
SQL;
$terms = $wpdb->get_results($sql);
$term_ids = array();
foreach($terms as $term) {
  $term_ids[] = $term->term_id;
}
$terms = get_terms('client_name',array(
  'include'=> implode(',',$term_ids),
));
print_r($terms);

Nous utilisons SQL brut pour interroger les termes dans le taxonomy='client_name' pour 'post_type='our_work' et nous recueillons les $term->term_ids pour filtrer la liste des termes de taxonomie. Je SQL cru parce que WordPress ne fournit pas une bonne façon d'obtenir ces données via une API, au moins pas que je pouvais trouver à court préavis ( si quelqu'un connaît une meilleure façon via l'API qui ne fonctionne pas exiger du chargement beaucoup plus de données que nécessaire s'il vous plaît laissez-moi savoir ).

Espérons que cela suggère une approche afin que vous serez en mesure d'utiliser ce code dans votre exemple? Permettez-moi de savoir si le savoir sinon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top