Rimozione duplicati personalizzato Tassonomia Termini all'interno di un menu a discesa Select?

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

  •  16-10-2019
  •  | 
  •  

Domanda

Ho un tipo di messaggio personalizzato che include una tassonomia personalizzato, chiamato client_name. C'è una pagina che carica questi tipi di messaggi personalizzati e li visualizza. Che cosa ho bisogno per sviluppare è un elenco a discesa che visualizza tutti i tassonomia personalizzato di quei messaggi personalizzati, che ho fatto, ma ho bisogno di rimuovere i duplicati, e disporli in ordine alfabetico, che è dove ho dei problemi.

Questo è quello che sto cercando per la rimozione di duplicati (non funziona):

<?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, ora mi sono imbattuto in questo funzione PHP l'altro giorno e si fa quello che voglio, so appena non come usarlo correttamente.

array_unique($input);

darmi una mano ragazzi .... Si noti il ??codice di cui sopra è solo un ramo di codice che stavo cercando, non l'intero file.


UPDATE

Hey questo mi fa un po 'di aiuto, e ho trovato questo uso, questo mi fa come il 95% fatto, ma non ancora al 100%. Ho cercato il tuo codice, e ho provato questo quello che sto usando, e rimuove del DUP, ma tutto ciò che viene dopo è solito visualizzare hmm ....

Ecco il codice 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();

E qui è l'uscita dalla matrice, si duplica l'uscita di matrice perché è chiamato ogni volta che un nuovo post viene chiamato all'interno del ciclo. La pagina è disponibile qui:

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

Visualizza la fonte per vedere quello che voglio dire.

È stato utile?

Soluzione

Ciao @Hunter Brelsford:

Buono a vedere qui sopra dalla href="http://www.linkedin.com/groups?mostPopular=&gid=154024" rel="nofollow"> WordPress Gruppo .

Forse mi fraintendere tua domanda, ma suona come sei semplicemente cercando di sbarazzarsi di dups in un array Per esempio, diciamo che si dispone di un client di matrice:?

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

E si desidera convertire in un array come questo?

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

( Se sì, questa è una domanda di PHP e non una domanda di WordPress, normalmente qualcosa inviamo via , ma io vado avanti e rispondere a qui comunque. )

Tis facile; poiché chiavi dell'array sono unici in PHP basta girare l'array (scambiare i valori con le loro chiavi) per poi tornare le chiavi dell'array e avrete la matrice unica, in questo modo:

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

che stampa codice:

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

Era questo quello che erano dopo?

UPDATE:

Ciao @Hunter Brelsford :

sto rispondendo al vostro aggiornamento. Va bene, perché non cerchiamo di affrontare questo un modo diverso? Ecco un esempio standalone è possibile copiare alla radice del tuo sito web come test.php ed eseguirla come http://magicvideo.com/test.php per vedere funziona:

<?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);

Usiamo SQL prime per interrogare i termini del taxonomy='client_name' per 'post_type='our_work' e poi raccogliere le $term->term_ids per filtrare l'elenco dei termini tassonomia. Ho usato SQL prime perché WordPress non fornisce un buon modo per ottenere questi dati attraverso un API, almeno non che ho potuto trovare in tempi brevi ( se qualcuno sia a conoscenza di un modo migliore tramite l'API che non lo fa richiedono il caricamento di dati molto di più di quanto sia necessario per favore fatemelo sapere ).

Speriamo che questo vi suggerisce un approccio in modo che sarete in grado di utilizzare questo codice nel tuo esempio? Fammi sapere se sapere se non.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top