it-swarm.com.de

Filtern Sie benutzerdefinierte Posts mithilfe von automatisch ausgefüllten Dropdown-Selektoren

Ich habe einen benutzerdefinierten Beitragstyp mit dem Namen Agent erstellt.

Ich habe eine Seite, auf der alle Agenten aufgelistet sind.

Wenn ich einen Agenten hinzufüge, habe ich eine ganze Reihe von benutzerdefinierten Meta-Feldern, die ausgefüllt werden können, Region, Spezialität, Sprache ...

Ich möchte eine Reihe von Dropdown-Feldern am Front-End hinzufügen, die alle Begriffe aus den einzelnen benutzerdefinierten Metas enthalten. Zum Beispiel würde eine Regions-Dropbox mit allen Regionen aller Agenten gefüllt. Wenn ich einen neuen Agenten in einer neuen Region hinzufüge, nimmt die Dropbox diesen automatisch auf.

Danke fürs schauen.

1
Chuck

Wenn Sie versuchen, dies zu tun, werden Sie möglicherweise eine ziemlich große Datenmenge abfragen müssen, was vermieden werden sollte.

Am besten ist es, die Daten in einigen global (array) $prefix_meta_box_values vorab zu sammeln und diese später für die Front-End-Ausgabe zu verwenden.

Sie können auch ein Array mit save_post-Hooks füllen. Fassen Sie die Werte einfach mit get_post_meta( $post_id, 'key', 'value' ) in einer Funktion auf Ihrem Post-Edit-Bildschirm in der Admin-Benutzeroberfläche zusammen und fügen Sie sie mit update_option('agents_data') in ein DB-Feld ein. Auf diese Weise können Sie get_option('agents_data'); im Frontend aufrufen und Ihre Auswahlfelder ausfüllen.

Update:

// The updata agents option could look like this, asuming that you already added 
// some data with an add_option call somewhere. Else you could just grap the old
// data, merge it with the new and update the post meta field.
// This was fastly written out of my head, so don't expect it to work without any fixing.
function my_agents_data() 
{
  $new_agents_data = get_post_meta( $GLOBALS[$post]->ID, 'key', 'value' );
  $old_agents_data = get_option( 'agents_data' );
  $resulting_agents_data = array_merge( $old_agents_data, $new_agents_data );
  update_option( 'agents_data', $resulting_agents_data );
}
add_action( 'save_post', 'my_agents_data' );

Auf diese Weise können Sie die Optionsdaten aus dem Optionsfeld get_option('agents_data') in der WP-Optionstabelle abrufen. Dies bedeutet, dass Sie dann vermeiden sollten, dass die Metadaten in die Post-Metatabelle gelangen.

1
kaiser