it-swarm.com.de

Benutzerdefinierter Beitragstyp, Speichern mehrerer Kontrollkästchen

Für einen benutzerdefinierten Beitragstyp rufe ich eine Liste mit anderen benutzerdefinierten Beitragstypen auf, die ich zum Speichern auswählen muss ...

<input type="checkbox" name="32"> My CPT <br>
<input type="checkbox" name="41"> My CPT 2 <br>
<input type="checkbox" name="42"> My CPT 3 <br>
<input type="checkbox" name="43"> My CPT 4

Es ist einfach genug, eine einzelne Eingabe zu speichern, aber wie speichere ich mehrere Kontrollkästchen?

update_post_meta( $post->ID, 'mycpt', $_POST['myinput'] );
1
dcolumbus

Sie müssen sie als Array speichern, und derzeit hat Ihr HTML-Code nicht das richtige Format, um dies zu tun.

<label for="my-cpt-32">
    <input type="checkbox" name="cpt_ids[]" value="32" id="my-cpt-32" />
    My CPT #32
</label>
<label for="my-cpt-41">
    <input type="checkbox" name="cpt_ids[]" value="41" id="my-cpt-41" />
    My CPT #41
</label>
<label for="my-cpt-43">
    <input type="checkbox" name="cpt_ids[]" value="42" id="my-cpt-43" />
    My CPT #43
</label>

Wenn dies $ _POST'ed ist, werden Sie eine Reihe von geprüften Werten haben, stellen Sie sicher, dass es 'gesetzt' ist, z. isset( $_POST['cpt_ids'] ).

Wenn Sie 41 und 43 ankreuzen, erhalten Sie ein Array wie das folgende:

array(
    [0] => 41,
    [1] => 43
)

die Sie verwenden können, um in Ihrem benutzerdefinierten Feld oder einer sekundären Tabelle usw. zu speichern.

Ich hoffe das hilft!

2
Cristian

Der dritte Parameter von update_post_meta () kann ein Array sein. Ändern Sie das Namensattribut des Kontrollkästchens in "myCPT []" und fügen Sie ein Wertattribut hinzu:

<input type="checkbox" name="myCPT[]" value="32"> My CPT <br>
<input type="checkbox" name="myCPT[]" value="41"> My CPT 2 <br>
<input type="checkbox" name="myCPT[]" value="42"> My CPT 3 <br>
<input type="checkbox" name="myCPT[]" value="43"> My CPT 4

damit können Sie alle ausgewählten Werte als Array abrufen.

Wenn das Formular gesendet wird, erstellt PHP ein Array der ausgewählten Werte. Auf das Array kann dann mit $ _POST ['myCPT'] zugegriffen werden.

1
nvwd