web-dev-qa-db-de.com

Option hinzufügen, wenn nicht vorhanden

Ich muss sehen, ob eine Option und wenn ja, den Wert erhalten. Wenn nicht, muss ich es hinzufügen.

Der Codex bietet:

<?php
$option_name = 'myhack_extraction_length' ;
$new_value = '255' ;
if ( get_option( $option_name ) != $new_value ) {
update_option( $option_name, $new_value );
} else {
$deprecated = ' ';
$autoload = 'no';
add_option( $option_name, $new_value, $deprecated, $autoload );
}
?>

Was angeblich den Optionsnamen myhack_extraction_length mit dem Wert 255 aktualisiert. Wenn die Option nicht existiert, benutze add_option und setze autoload auf no.

Es scheint mir jedoch, dass die zweite Hälfte auf zwei Arten aufgerufen werden könnte, wenn die Option nicht existiert OR, wenn der neue Wert == die Option ist

Ist das richtig?

2
Chris

Die Logik auf der IF THEN ELSE scheint ein bisschen wackelig. Wenn ich es richtig lese ...

Der Aufruf von get_option ($ option_name) gibt FALSE zurück, wenn die Option nicht existiert oder keinen Wert hat.

Also würde dasIFausgeführt werden:

  1. wenn die Option nicht existiert und $ new_value! = FALSE
  2. die Option hat keinen Wert und $ new_value! = FALSE
  3. die Option ist vorhanden und hat einen Wert von! = $ new value

Der Aufruf von update_option () würde dann den Wert aktualisieren oder die Option mit $ new_value erstellen.

DasELSEwürde aufgerufen, wenn:

  1. die Option ist vorhanden und hat denselben Wert wie $ new_value
  2. die Option existiert nicht und $ new_value == FALSE
0
Steve

Dies ist einfacher - prüfen Sie, ob die Option nicht vorhanden ist (gleiches gilt für false/empty). d. h .:

if(!get_option('speccc_nameee')){
    update_option('speccc_nameee', 'first_default_value');
}
5
T.Todua

Ist das richtig?

Wenn du meinst "wann wird das" wenn "ausgeführt und wann wird das" sonst "ausgeführt, dann" nein ". Sieh dir die Bedingung an: if ( get_option( $option_name ) != $new_value ) {

Wenn die Option nicht existiert - false != '255' ist true -, wird der erste Teil ausgeführt. Es wird auch ausgeführt, wenn die Option vorhanden ist und die Werte nicht übereinstimmen --'123' != '255' is true.

Der else wird nur ausgeführt, wenn die Werte do match-- '255' != '255' falsch sind, sodass der Teil else ausgeführt wird. Sie könnten mit allem übereinstimmen, mit Zahlen, Zeichenketten, Booleschen - auch wahr oder falsch genannt

1
s_ha_dum

Ich glaube, dass der beste Ansatz für dieses Problem darin besteht, eine IF-ELSE-Logik wie die folgende zu erstellen:

   if(get_option('some_option')){
         update_option('some_option', 'value_we_want_to_add');
    }
    else {
      add_option('some_option', 'value_we_want_to_add');
    }

Logik: get_option () gibt WAHR zurück, wenn diese Option vorhanden ist. In diesem Fall können wir diese Option einfach mit einem Wert aktualisieren, den wir hinzufügen möchten. Dies erledigt update_option('some_option','value_we_want_to_add'). Wenn andererseits eine Option nicht existiert, gibt get_option FALSE zurück und aktiviert den ELSE-Block. Innerhalb des else-Blocks gaben wir die Anweisung, diese "some_option" zu erstellen und ihr den gewünschten Wert zuzuweisen.

Optional kann diese Logik geändert werden, um weitergehende Anforderungen zu erfüllen.

1
Technogeek