it-swarm.com.de

So rufen Sie serialisierte Daten aus WordPress-Optionen ab

Ich habe die folgenden serialisierten Daten in einer WP-Option a:2:{s:5:"Title";s:11:"your title";s:7:"Message";s:20:"Hola testing testing";}

Ich würde es gerne zurückgeben, um es in einem Formular zu verwenden, und es auch im Frontend zeigen, versuchte ich

<?php echo get_option('notice_data[Message]'); ?>

das ist das Array

$notice_data = array(
    'Title' => '',
    'Message' => ''
);
add_option("notice_data", 'Default', '', 'yes');

Ich erstelle ein Plugin mit einer Einstellungsseite mit zwei Formularen, in denen die Daten in der Option wp gespeichert werden, damit sie von der Funktion jquery in einer js-Datei verwendet werden können. Hier ist ein Teil der Einstellungsseite.

<textarea name="notice_data[Title]" id="notice_data" />
<?php echo get_option('notice_data[Title]'); ?>
</textarea>
</td>
</tr>
<tr valign="top">
<th width="92" scope="row">Body Message</th>
<td width="406">
<textarea name="notice_data[Message]" id="notice_data" cols="40" rows="10" />
<?php echo get_option('notice_data[Message]'); ?>
</textarea>

Ich lokalisiere auch das Skript, um die in der Option wp gespeicherten Daten abzurufen, die in einer jquery-Funktion verwendet werden sollen, die die Nachrichten anzeigt, wenn bestimmte Bedingungen erfüllt sind. Wie kann ich die serialisierten Daten abrufen?

1
David Garcia

Nein, das geht nicht:

<?php echo get_option('notice_data[Message]'); ?>

Da get_option den gesamten Optionswert nach option_name zieht, werden keine Teile des serialisierten Arrays gezogen. Was Sie verlangen, ist ein Schlüssel (option_name), der wörtlich notice_data[Message] genannt wird. Angenommen, Sie haben die Option als notice_data gespeichert, erhalten Sie keine Übereinstimmung, und ich bin nicht einmal sicher, ob der Optionsname eckige Klammern enthält. Ich habe es nie versucht.

Was Sie brauchen, ist ...

$notice_data = get_option('notice_data');
echo $notice_data['Message'];

Sie sagten, dass Sie "das Skript lokalisieren". Für die Verwendung durch jQuery/Javascript würden Sie so etwas tun ( fast vollständig aus dem Codex entfernt ):

$notice_data = get_option('notice_data');

wp_enqueue_script( 'some_handle' );
$translation_array = array( 
    'notice_data' => $notice_data['Message'] 
);
wp_localize_script( 'some_handle', 'object_name', $translation_array );

Ihr Javascript sollte als object_name.notice_data darauf zugreifen können.

8
s_ha_dum