- 22, Oct 2024
- #1
мне нужно создать функцию обратного вызова с несколькими флажками со всеми категориями веб-сайтов/блогов в качестве нескольких опций.
мои add_settings_fields:
function journal_check_cats_callback() { $options = get_option('journal_theme_blog_2_col'); $pag = journal_theme_blog_2_col; $_cats = get_terms( 'category' ); $html = ''; foreach ($_cats as $term) { $checked = isset( $term->term_id ) ? $term->term_id : '0' ; $html .= sprintf( '<input type="checkbox" id="%1$s[%2$s]" name="journal_theme_blog_2_col[]" value="%2$s"%3$s />', $pag, $term->term_id, checked( $checked, $options['check_categories'], false ) ); $html .= sprintf( '<label for="%1$s[%3$s]"> %2$s</label><br>', $pag, $term->name, $term->term_id ); } $html .= sprintf( '<span class="description"> %s</label>', '' ); echo $html; }
нужно ли мне объявить какой-то массив в поле settings_field «check_categories» для связи с функцией обратного вызова?
add_settings_field(
'select_page',
'Select Blog Page', /
'journal_combo_select_page_callback',
'journal_theme_blog_2_col',
'blog_page_blog_2_col_section'
);
add_settings_field(
'limit_posts',
'Limit Posts',
'journal_limit_posts_callback',
'journal_theme_blog_2_col',
'blog_page_blog_2_col_section'
);
add_settings_field( // $id, $title, $callback, $page, $section, $args
'check_categories', // $id
'Choose Categories', // $title
'journal_check_cats_callback', // $callback -
'journal_theme_blog_2_col', // $page
'blog_page_blog_2_col_section' // $section
);
РЕДАКТИРОВАТЬ:
ну, я пытаюсь заставить этот код работать, но он еще не спокоен... в тот момент, когда я нажимаю кнопку «Сохранить» (отправить), значения сохраняются в таблице wp_options.
Например:
в разделе settings_section у меня есть три поля settings_fields. Одно поле со списком (select_page), одно текстовое поле ввода (limit_posts) и одно поле с несколькими флажками с категориями блога (check_categories). Ниже приведены данные, сохраненные в таблице wp-options:
a:4:{s:11:"select_page";s:1:"4";s:11:"limit_posts";s:3:"100";i:0;s:2:"13";i :1;с:1:"7";}
и это соответствующий массив:
Массив ([select_page] => 4 [limit_posts] => 100 [0] => 13 [1] => 7 )
Проблемы, которые нужно решить:
1 - флажки не остаются отмеченными! И, конечно же, если я снова нажму «Сохранить», не проверяя новые, значения в таблице параметров будут удалены.
2 - я также понял, что «check_categories» не сохраняется в сериализованном значении... Поэтому я думаю, что это проблема, потому что я не знаю, как исправить только значения массива из «check_categories».
Кто-нибудь может мне помочь?