2

管理ページ内にチェックボックスがあり、コードは次のようになります(このコードは機能し、チェックボックスのオンとオフを切り替えて変更を保存できます)

add_settings_field(
    'my_checkbox_default',
    'Checkbox:',
    'my_default_checkbox_settings_function',
    'override_theme_display_options',
    'override_theme_display_options'
);

function my_default_checkbox_settings_function(){
    $options = get_option('override_theme_display_options');
    if(isset($options['my_checkbox_default'])) { 
        $checked = 'checked'; 
    } else { 
        $checked = '';
    }
    update_option('my_checkbox_default', $checked);
    echo "<input type='checkbox' name='override_theme_display_options[my_checkbox_default']' ".$checked." id='my_checkbox_default' />";
}

ここで、チェックボックスにデフォルトの状態「チェック済み」を追加したいと思います。

したがって、私のチェックボックス設定関数は次のようになります。

function my_default_checkbox_settings_function(){
    $options = get_option('override_theme_display_options');
    //Added default state "checked" to my check box
    add_option('my_checkbox_default',$checked = 'checked');
    if(isset($options['my_checkbox_default'])) { 
        $checked = 'checked'; 
    } else { 
        $checked = ''; 
    }
    update_option('my_checkbox_default', $checked);
    echo "<input type='checkbox' name='override_theme_display_options[my_checkbox_default']' ".$checked." id='my_checkbox_default' />";
}

私のチェックボックスはデフォルトで「チェック済み」の状態になりましたが、チェックボックスのオンとオフを切り替えることができなくなりました(何をしても常に「チェック済み」のままです)。 「チェック済み」状態は設定されませんが、チェック ボックスの状態を再度切り替えて保存することができます。add_option()

デフォルトで「チェック済み」状態を追加し、チェックボックスのオプションを切り替えて保存できるようにするにはどうすればよいですか?
これを解決するために 50 の報奨金を喜んで追加します。THX!

4

1 に答える 1

2

これがプラグインの場合、最初に でオプションを設定する必要がありますregister_activation_hook。テーマの場合は、 を使用しますafter_setup_theme

run_once この WPSE Answer で説明されている代替手法もあり、これも非常にうまく機能します。

これは、あなたのものとを使用したいくつかの Codex サンプルに大まかに基づいた実用的な例ですrun_once。関数 の使用に注意してくださいchecked()

add_action('admin_init', function() 
{
    // Change the "init_*" to anything else to `run_once` again
    if ( wpse_25643_run_once('init_checkbox_default') ) 
    {
        add_option('my_checkbox_default', true );
    }
    register_setting('media','my_checkbox_default');

    add_settings_field(
        'my_checkbox_default',
        'Checkbox:',
        'my_default_checkbox_settings_function',
        'media'
    );
});

function my_default_checkbox_settings_function() 
{
    printf( 
        "<input name='my_checkbox_default' id='gv_thumbnails_insert_into_excerpt' type='checkbox' value='1' class='code' %s /> Explanation text",
        checked( 1, get_option('my_checkbox_default'), false )
    );
}

function wpse_25643_run_once( $key )
{
    $test_case = get_option( 'run_once' );

    if ( isset( $test_case[$key] ) && $test_case[$key] )
    {
        return false;
    }
    else
    {
        $test_case[$key] = true;
        update_option('run_once',$test_case);
        return true;
    }
}
于 2013-07-09T17:33:35.033 に答える