I'm trying to incorporate a list of checkbox in my plugin's admin settings page from which users can select a few countries from the list of all countries.
So far I've done this:
add_action( 'admin_init', 'register_page_options' );
function register_page_options() {
// Add Section for option fields
add_settings_section( 'aicp_section', __( '....text here....', 'aicp' ), 'display_section', 'aicp_settings' ); // id, title, display cb, page
// Add Field for selecting countries for which you wanna ban ads
add_settings_field( 'aicp_country_list', __( 'Select the countries', 'aicp' ), 'country_list_field', 'aicp_settings', 'aicp_section' ); // id, title, display cb, page, section
// Register Settings
register_setting( 'aicp_settings', 'aicp_settings_options', array( $this, 'validate_options' ) );
}
// now comes the section for checkbox
function country_list_field() {
$options = get_option( 'aicp_settings_options' );
?>
<input type="checkbox" name="aicp_settings_options[country_list][]" value="AF"<?php checked( 'AF' == $options['country_list'] ); ?> /> Afganistan
<input type="checkbox" name="aicp_settings_options[country_list][]" value="AX"<?php checked( 'AX' == $options['country_list'] ); ?> /> Aland Islands
<?php
}
Please Note: This is not the entire code, but a short part of it to give you guys the idea about my question.
Now as you can see I'm using checkboxes above I want all the selected options to be stored as comma seperated
, like AF,AX,IN,US etc. so that when I need to work with those data, I can just simply explode
them and use.
Anyways after a bit digging I found this answer: How to use checkbox and radio button in options page? which has showed how to handel checkbox & radio box in the settings api.
But the problem is that as I'm using the checkbox for a country list, I can't just simply used the checked()
to see which of the checkbox are selected as there are a ton of country name and the user can select any one of them or all of them or some of them.
Also when I checked this link: https://stackoverflow.com/questions/6881039/how-to-handle-multiple-checkboxes-in-a-php-form it showed me to use []
with the name for the checkbox
so that they can be stored as array.
Now as I'm using the WP Settings API I'm already using naming like aicp_settings_options[country_list]
which itself is an array. So, should I have to create a 2 dimentional array like this: aicp_settings_options[country_list][]
?
I'm really confused about how should I grab the data and store them. Also how can I easily check which of the checkboxes are selected by the user.
It would be great if anyone can help. Thank you in advance.