webentwicklung-frage-antwort-db.com.de

wie bekomme ich den Wert von wp_dropdown_categories?

Ich erstelle ein Widget und habe in diesem Widget die Funktion wp_dropdown_categories () verwendet. Was ich nicht herausfinden kann, ist, wie ich den ausgewählten Wert aus der Dropdown-Liste erhalte.

In welcher Variablen wird die ausgewählte Variable gespeichert?

$args = array('show_option_none' => 'No Category','hide_empty' => 0);
wp_dropdown_categories( $args );
4
Jamie

Wir können die Kategorien über get_categories () function (die dieselben Kategorien erhalten wie wp_dropdown_categories () function), aber als Array und ohne das Markup.

Da der Wert returned as ist, können wir die Kategorien durchlaufen und den HTML-Code selbst generieren.

Normalerweise würden wir eine Struktur wie diese anstreben:

<select name="categories">
  <option value="1">Category 1</option>
  <option value="2">Category 2</option>
  <option value="3">Category 3</option>
</select>

Also generieren wir die Struktur von oben über PHP, indem wir das $categories-Array durchlaufen:

echo '<select name="categories">';

  // Get categories as array
  $categories = get_categories( $args );
  foreach ( $categories as $category ) :

    echo '<option value="' . $category->term_id . '">' . $category->name . '</option>';

  endforeach;

echo '</select>';

Sie können die Funktion auch über die Parameter $args ändern (siehe Codex als Referenz).

Jetzt müssen wir nur noch das selected-Attribut in den <option> einfügen, also fügen wir dies über eine kurze if-Anweisung hinzu, um den aktuellen $category->term_id mit dem in der Datenbank gespeicherten $stored_category_id zu vergleichen:

$stored_category_id = 10; // This is the value from the database
$selected = ( $stored_category_id == $category->term_id  ) ? 'selected' : '';

Und das ist es! Ihr vollständiges Snippet (möglicherweise mit einer Standardoption am Anfang) sollte jetzt ungefähr so ​​aussehen:

echo '<select name="categories">';
  // Add custom option as default
  echo '<option>' . __('No Category', 'text-domain') . '</option>';

  // Get categories as array
  $categories = get_categories( $args );
  foreach ( $categories as $category ) :

    // Check if current term ID is equal to term ID stored in database
    $selected = ( $stored_category_id ==  $category->term_id  ) ? 'selected' : '';

    echo '<option value="' . $category->term_id . '" ' . $selected . '>' . $category->name . '</option>';

  endforeach;

echo '</select>';

Viel Glück! :)

7
Sven