Frage

Ich habe einen benutzerdefinierten Beitragstyp, der eine benutzerdefinierte Taxonomie nennt, namens client_name. Es gibt eine Seite, auf der diese benutzerdefinierten Beitragstypen geladen und angezeigt werden. Was ich entwickeln muss, ist eine Dropdown -Liste, in der die benutzerdefinierte Taxonomie dieser benutzerdefinierten Beiträge angezeigt wird, die ich gemacht habe, aber ich muss Duplikate entfernen und alphabetisch anordnen, wo ich Probleme habe.

Dies ist, was ich versuche, Duplikate zu entfernen (es funktioniert nicht):

<?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, jetzt bin ich neulich auf diese PHP -Funktion gestoßen und es tut das, was ich will, ich weiß einfach nicht, wie ich sie richtig benutzt.

array_unique($input);

Hilf mir, Jungs aus, beachten Sie, dass der oben aufgeführte Code nur eine Code -Zweigstelle ist, die ich versucht habe, nicht die gesamte Datei.


AKTUALISIEREN

Hey, das hilft mir ziemlich viel, es und ich fand es zu bedienen, das bringt mich zu 95%, aber noch nicht 100%. Ich habe Ihren Code ausprobiert und ich habe diesen ausprobiert, den ich benutze, und es entfernt die DUPs, aber alles, was nach seiner Zeit kommt, wird Hmm nicht angezeigt ....

Hier ist der WP -Code:

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

Und hier ist die Ausgabe aus dem Array, es dupliziert die Arrayausgabe, da es jedes Mal aufgerufen wird, wenn ein neuer Beitrag innerhalb der Schleife aufgerufen wird. Die Seite ist hier verfügbar:

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

Sehen Sie sich die Quelle an, um zu sehen, was ich meine.

War es hilfreich?

Lösung

Hi @Hunter Brelsford:

Schön, Sie hier von der zu sehen WordPress -Gruppe auf LinkedIn.

Vielleicht verstehe ich Ihre Frage falsch, aber es hört sich so an, als ob Sie es sind Einfach versuchen, Dups in einem Array loszuwerden? Nehmen wir zum Beispiel an, Sie haben eine Array -Clients:

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

Und Sie möchten in ein Array wie dieses konvertieren?

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

(Wenn ja, das ist eine PHP -Frage und keine WordPress -Frage, normalerweise etwas Wir senden weg, aber ich werde hier trotzdem antworten.)

Es einfach; Da Array -Tasten in PHP eindeutig sind, drehen Sie einfach das Array um (tauschen Sie die Werte mit ihren Tasten aus) und geben Sie die Array -Tasten zurück und Sie haben Ihr eindeutiges Array wie SO:

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

Dieser Code druckt:

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

Warst du das?

AKTUALISIEREN:

Hi @Hunter Brelsford:

Ich antworte auf Ihr Update. Okay, warum versuchen wir nicht, dies auf eine andere Art und Weise anzugehen? Hier ist ein eigenständiges Beispiel, das Sie in die Stammin Ihrer Website kopieren können test.php Und dann leiten Sie es als http://magicvideo.com/test.php Um zu sehen, dass es funktioniert:

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

Wir verwenden RAW SQL, um die Begriffe in der abzufragen taxonomy='client_name' zum 'post_type='our_work' Und dann sammeln wir das $term->term_ids, um die Liste der Taxonomiebedingungen zu filtern. Ich habe RAW SQL verwendet, weil WordPress keine gute Möglichkeit bietet, diese Daten über eine API zu erhalten, zumindest nicht, dass ich kurzfristig finden kann (kurzfristig (Wenn jemand anderes über die API einen besseren Weg weiß, der nicht viel mehr Daten als nötig erfordert, lassen Sie es mich bitte wissen).

Hoffentlich schlägt dies einen Ansatz vor, damit Sie diesen Code in Ihrem Beispiel verwenden können? Lassen Sie mich wissen, ob es wissen, wenn nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top