web-dev-qa-db-ja.com

ワードプレスのオプションからシリアル化されたデータを取得する方法

私はwpオプションa:2:{s:5:"Title";s:11:"your title";s:7:"Message";s:20:"Hola testing testing";}で次のシリアル化されたデータを持っています

フォームで使用するために返却し、フロントエンドにも表示したいのですが、試してみました

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

これは配列です

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

Jsファイル内のjquery関数で使用するためにwpオプションでデータを保存する2つのフォームを持つ設定ページを持つプラグインを作成しています。これは設定ページの一部です。

<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>

また、特定の条件が満たされたときにメッセージを表示するjquery関数内で使用するために、wpオプションに保存されたデータを取得するスクリプトをローカライズしています。

1
David Garcia

いいえ、これは機能しません。

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

get_option はオプション値全体をoption_nameで引っ張るので、直列化された配列の一部では引っ張られません。あなたが求めているのは、文字通りoption_nameと呼ばれるキー(notice_data[Message])です。あなたがnotice_dataとしてオプションを保存したと仮定すると、あなたはマッチを取得するつもりはありません、そして括弧がオプション名でサポートされているかどうかさえ私にはわかりません。私は試したことがない。

必要なものは.

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

あなたはあなたが "スクリプトをローカライズする"と言っています。そのため、jQuery/Javascriptで使用するには、次のようにします( Codexからほぼ完全に切り取られたもの )。

$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 );

あなたのJavascriptはobject_name.notice_dataとしてそれにアクセスするべきです。

8
s_ha_dum