wordpressプラグインの作成は初めてです。wp-admin セクションの設定オプションの下にカスタム ページ オプションを表示し、入力データの値を保存して取得するプラグインを作成したいのですが、otto pressのチュートリアルを実行しました。
wp-content/plugin/
フォルダー内に名前付きのフォルダーを作成したのnew-setting-plugin
は、名前付きのファイルでnew-setting-plugin.php
あるため、ファイルパス全体はwp-content/plugin/new-setting-plugin/new-setting-plugin.php
ファイル new-setting-plugin.php のコードは、表の最後に記載されています。コードを作成した後、wp-admin のプラグイン ページにアクセスしてプラグインをインストールしましたが、すべて問題ありませんでした。
「設定の保存」ボタンを押すと、「設定が保存されました」というメッセージが表示されますが、入力フィールド内の値が表示されません
画像を添付して、プラグイン ページに表示される内容をプレビューしています
プラグイン ページに移動すると、次の入力フィールドが表示されます。
今、入力フィールドに値を入力しています:
「設定を保存」ボタンをクリックすると、ページが更新された後に次のメッセージが表示されました
これが私のコードです
<?php
add_action('admin_menu', 'add_page');
if ( !function_exists( 'add_page' ) ) {
//function to add page under setting options in wordpress admin section
function add_page() {
add_options_page('New Setting Page', 'New Setting', 'manage_options', 'plugin', 'plugin_options_frontpage');
}
}
function plugin_options_frontpage() {
?>
<div class="wrap">
<?php screen_icon('users'); ?><h2>New Setting Page title</h2>
<form action="options.php" method="post">
<?php settings_fields('plugin_options'); ?>
<?php do_settings_sections('plugin'); ?>
<table class="form-table">
<tr valign="top">
<td colspan="2">
<input name="Submit" type="submit" class="button button-primary" value="<?php esc_attr_e('Save Changes'); ?>" />
</td>
</tr>
</table>
</form>
</div>
<?php
}
add_action('admin_init', 'plugin_admin_init');
function plugin_admin_init(){
register_setting( 'plugin_options', 'plugin_options', 'plugin_options_validate' );
add_settings_section('plugin_main', 'Main Settings', 'plugin_section_text', 'plugin');
add_settings_field('plugin_text_input1', 'Input 1', 'plugin_input1', 'plugin', 'plugin_main');
add_settings_field('plugin_text_input2', 'Input 2', 'plugin_input2', 'plugin', 'plugin_main');
}
function plugin_section_text() {
echo '<p>New input setting to be saved.</p>';
}
function plugin_input1() {
$options = get_option('plugin_options');
echo "<input id='plugin_input1' class='normal-text code' name='plugin_options[text_string]' size='30' type='text' value='{$options['text_string']}' />";
}
function plugin_input2() {
$options = get_option('plugin_options');
echo "<input id='plugin_input2' class='normal-text code' name='plugin_options[text_string]' size='30' type='text' value='{$options['text_string']}' />";
}
function plugin_options_validate($input) {
$options = get_option('plugin_options');
$options['text_string'] = trim($input['text_string']);
if(!preg_match('/^[a-z0-9]{32}$/i', $options['text_string'])) {
$options['text_string'] = '';
}
return $options;
}
?>
コードの何が問題なのですか?コードを修正するにはどうすればよいですか?テーブルの同じページのフィールド外の入力フィールドの値を表示する方法はありますか?