it-swarm.com.de

update_user_meta addiert den Wert oben auf den vorhandenen Wert

Ich arbeite an einem Plug-in, mit dem Benutzer Lieblingsautoren auf der WP -Seite erstellen können.

Wenn Sie auf die Schaltfläche Diesen Autor favorisieren klicken, wird die Autorenkennung an die unten angegebene Funktion gesendet und dieser Wert in der Datenbank gespeichert.

Unten ist der Code, den ich unter FAV_AUTHORS_META_KEY in der wp_usermeta-Tabelle gespeichert habe.

$user_id = fav_authors_get_user_id();
$fav_author_id = 2;
update_user_meta( $user_id, FAV_AUTHORS_META_KEY, $fav_author_id );

Wenn ich die Autorenkennung 2 habe, wird diese in der Datenbank gespeichert. Wenn ich jedoch eine andere Autoren-ID sende, überschreibt update_user_meta den vorhandenen Wert, anstatt den neuen Wert hinzuzufügen.

Wie kann ich dafür sorgen, dass der vorhandene Wert erhalten bleibt und obendrein ein neuer Wert hinzugefügt wird?

1
Ohsik

Es gibt keine integrierte Funktion zum Anhängen von Metawerten, die Sie manuell ausführen müssen. Wenn Sie vorhaben, mehrere Werte hinzuzufügen, würde ich vorschlagen, es als Array zu speichern, aber es wird in der Datenbank serialisiert, was die Ausführung von WP_Meta_Query erschwert .

$user_id        = fav_authors_get_user_id();
$fav_author_id  = 2;
$author_list    = get_user_meta( $user_id, FAV_AUTHORS_META_KEY, true );

if( empty( $author_list ) ) {   // There was no meta_value, set an array.
    update_user_meta( $user_id, FAV_AUTHORS_META_KEY, array( $fav_author_id ) );
} else {
    $author_arr = ( is_array( $author_list ) ) ? $author_list : array( $author_list );  // Added in case current value is not an array already.
    $author_arr[] = $fav_author_id;
    update_user_meta( $user_id, FAV_AUTHORS_META_KEY, $author_arr );
}

Ich gehe davon aus, dass es sich bei Ihrer aktuellen Position nicht um ein Array handelt, und füge daher eine Inline-Bedingung in die else-Anweisung ein, um einzelne Werte in ein Array zu konvertieren. Beachten Sie , dass Sie true an get_user_meta() übergeben müssen, damit unser Array unserialisiert wird.

2
Howdy_McGee