Я создаю плагин конфигурации для управления настройками сайта, которые поэтому являются wp_options.
Я бы хотел иметь возможность выбрать один или несколько проектов из списка (отображаются в виде флажков).
Те, которые выбраны, затем сохраняются в wp_options, тогда я хотел бы связать параметры с этими проектами, такие как URL.
Вот когда у меня проблемы ...
Когда я обновляю выбранные проекты, связанные параметры, такие как URL-адреса, сами не обновляются
Вот примеры моего кода:
<?php
//wp_options of projects
public function page_config_init_list_projects(){
add_settings_section(
'projet-section',
'Choix des projets',
array( $this, 'print_projets_section_info' ),
'configuration-projet' // Page
);
add_settings_field(
'name',
'Liste des projets',
array( $this, 'project_chosen_callback' ),
'configuration-projet', // Page
'projet-section' // Section
);
add_settings_field(
'url',
'URL',
array( $this, 'url_callback' ),
'configuration-projet', // Page
'projet-section' // Section
);
register_setting(
'config-projets', // Option group
'projets' // Option name
);
}
//saving the projects chosen
public function project_chosen_callback(){
$items = array("project 1", "project 2", "project 3";
foreach ( $items as $id => $item) {
$names_projects = array();
foreach ($this->projetOptions as $projet){
array_push($names_projects, $projet['name']);
}
if ( in_array($item , $names_projects) ) {
$checked = 'checked="checked"';
} else $checked = null;
echo '<input type="checkbox" id="name" name="projets[][name]" value="'. $item .'"'. $checked.'/> '. $item .'</p>';
}
}
// parameter URL linked to a project chosen... here are the problems//
public function url_callback(){
foreach ($this->projetOptions as $id=>$projet){
echo $projet['name'] . ' : ';
printf(
'<input type="text" id="url" name="projets['.$id.'][url]" value="%s" /><br>',
isset( $projet['url'] ) ? esc_attr( $projet['url']) : ''
);
}
}
В данный момент я пытаюсь заставить параметр projects
реагировать на структуру такого типа:
array(2) {
[0]=> array(2) {
["name"]=> string(8) "project 1"
["url"]=> string(4) "test"
}
[1]=> array(1) {
["name"]=> string(8) "project 2"
}
}
Когда я выбираю проект и связываю его с URL, он работает хорошо. однако, когда я отменяю выбор проекта, он удаляет себя из wp_options, но URL остается.
Кроме того, URL-адреса связаны с идентификаторами, а не с проектами, поэтому при изменении списка выбранных проектов URL-адреса сдвигаются ...
Ну, я действительно не знаю, как поступить ...