Обратные Вызовы — Api Настроек: Как Создать Мультифлажок С Категориями Блога?

  • Автор темы Obebuibmume
  • Обновлено
  • 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».

Кто-нибудь может мне помочь?

Obebuibmume


Рег
03 Jan, 2014

Тем
81

Постов
202

Баллов
607
  • 25, Oct 2024
  • #2

У меня была такая же проблема, и вот что мне помогло:

 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 = in_array($term->term_id, $options) ? 'checked="checked"' : '';

$html .= sprintf( '<input type="checkbox" id="%1$s[%2$s]" name="%1$s[]" value="%2$s" %3$s />', $pag, $term->term_id, $checked );

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

}
 
 

Karakel


Рег
01 Jul, 2008

Тем
73

Постов
217

Баллов
592
Тем
403,760
Комментарии
400,028
Опыт
2,418,908