Подскажите пожалуйста каким образом можно управлять опциями (Медиазагрузчик, HTML редактор, Визуальный редактор) поля формы публикации? Т.е. включить или выключить, но не из визуального настройщика в бакэнде, а из собственного дополнения. Вроде нутром чувствую, что надо использовать rcl_public_form_options но не пойму как.
Так вы можете заранее в своем коде сделать массив с нужными включенными особенностями и затем в поле перезаписать существующий массив с этими опциями.
т.е. если вы принудительно хотите в редакторе включить все 3 опции, то например так:
add_filter( 'rcl_public_form_fields', function($fields, $form){
foreach($fields as &$field) {
if($field['slug'] == 'post_content') {
$field['post-editor'] = array('media', 'html', 'editor');
break;
}
}
return $fields;
}, 10, 2 );
Вот там 3 параметра, 3ий - как уже написали объект с экземпляром класса формы
add_filter( 'rcl_public_form_fields', function($fields, $form, $formObj){
if($formObj->form_id != 1 || $formObj->post_type != 'post') {
return $fields;
}
foreach($fields as &$field) {
if($field['slug'] == 'post_content') {
$field['post-editor'] = array('media', 'html', 'editor');
break;
}
}
return $fields;
}, 10, 3 );
так например можно менять значения только формы с ID 1 для записей типа post
Примененная мной конструкция
add_filter('rcl_public_form_fields','init_options',10,3);
function init_options($fields,$form,$id){
if($form->post_type != 'notepad_notes' || $id->form_id != 1) return $fields;
foreach($fields as &$field) {
if($field['slug'] == 'post_content') {
$field['post-editor'] = array('html');
break;
}
}
return $fields;
}не срабатывает 🙁
У меня работает ваш код.
Попробуйте так
add_filter('rcl_public_form_fields','init_options',10,3);
function init_options($fields,$form,$id){
if($form->post_type != 'notepad_notes' || $id->form_id != 1) return $fields;
foreach($fields as $k => $field) {
if($field['slug'] == 'post_content') {
$fields[$k]['post-editor'] = array('html');
break;
}
}
return $fields;
}
Еще приоритет можете попробовать повысить, заменить 10 на 100 например
Если ничего не поможет - тогда надо смотреть что верно сверяется slug, тип поста, id формы - может у вас выводится не то что вы фильтруете.
Через var_dump(); можете посмотреть срабатывает ли вообще фильтр, сверить значения до / после цикла. Вообщем подебажить
Preci
Все разобрался. Я проверял при этом отображение настроек формы в бакэнде и там то они не менялись, а вот во фронтенде все оказывается ОК. Всем спасибо за помощь.
P.S. Остался вопрос почему этот код за одно и в бакенде не меняет визуализацию настроек.
Ну он и не должен в настройках ничего менять. Вы же сказали вам принудительно в форме надо изменить настройки.
Если надо и в менеджере менять - то возможно этот фильтр подойдет
Но юзер сможет изменить значения, если и от этого надо защититься - то надо искать, думаю есть за что зацепиться при сохранении опция и подменить значения на нужные