La eliminación de duplicados Términos personalizada Taxonomía desde dentro de un desplegable Seleccionar?

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

  •  16-10-2019
  •  | 
  •  

Pregunta

Tengo un tipo de mensaje personalizado que incluye una taxonomía personalizada, llamada client_name. Hay una página que se carga este tipo de correos personalizados y pantallas ellos. Lo que necesito para desarrollar una lista desplegable que muestra toda la taxonomía costumbre de aquellos mensajes personalizados, lo que he hecho, pero necesito eliminar duplicados, y ordenarlas alfabéticamente, que es donde estoy teniendo problemas.

Esto es lo que intento para eliminar duplicados (que no funciona):

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

Bueno, ahora me encontré con esta función PHP el otro día y se hace lo que yo quiero, sé que simplemente no cómo utilizarlo correctamente.

array_unique($input);

Me ayudas chicos .... Tenga en cuenta el código que aparece arriba es sólo una rama de código que estaba tratando, no todo el archivo.


ACTUALIZACIÓN

Hey esto no me ayuda un poco, y me pareció que para su uso, esto me pone así el 95% hecho, pero no al 100% todavía. Probé su código, y he intentado esto que estoy usando, y se elimina del DUP, pero todo lo que viene después no lo puedo mostrar hmm ....

Aquí está el código 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();

Y aquí está la salida de la matriz, que duplica la salida del conjunto, ya que se llama cada vez que un nuevo puesto se llama dentro del bucle. La página está disponible aquí:

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

Ver la fuente para ver lo que quiero decir.

¿Fue útil?

Solución

Hola @Hunter Brelsford:

bueno verte aquí a lo largo de la href="http://www.linkedin.com/groups?mostPopular=&gid=154024" rel="nofollow"> WordPress Grupo .

Tal vez entienden mal su pregunta, pero parece que usted está simplemente tratando de deshacerse de los DUP en una matriz Por ejemplo, digamos que usted tiene una matriz de clientes:?

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

Y desea convertir a un conjunto como este?

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

( Si es así, esa es una pregunta de PHP y no una cuestión de WordPress, normalmente algo enviamos distancia , pero voy a seguir adelante y responder aquí de todos modos. )

Tis fácil; desde claves de matriz son únicos en PHP sólo tapa la matriz (el intercambio de los valores con sus claves) a continuación, volver las claves de matriz y que tendrá su gama única, así:

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

Ese código imprime:

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

¿Era eso lo que buscabas?

ACTUALIZACIÓN:

Hola @Hunter Brelsford

Estoy respondiendo a su actualización. Está bien, ¿por qué no tratar de abordar esta una manera diferente? Aquí está un ejemplo independiente puede copiar a la raíz de su sitio web como test.php y luego ejecutarlo como http://magicvideo.com/test.php para ver que funcione:

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

utilizar SQL prima para consultar los términos en el taxonomy='client_name' para 'post_type='our_work' y luego recoger los $term->term_ids para filtrar la lista de términos de la taxonomía. Solía ??SQL prima WordPress porque no proporciona una buena manera de obtener esta información a través de una API, al menos no que yo pudiera encontrar a corto ( si alguien sabe de una mejor manera a través de la API que no lo hace requerir la carga de datos mucho más de lo necesario por favor hágamelo saber ).

Esperamos que esto sugiere un enfoque de modo que usted será capaz de utilizar este código en tu ejemplo? Déjame saber si si no sé.

Licenciado bajo: CC-BY-SA con atribución
scroll top