Подскажите пожалуйста каким образом можно управлять опциями (Медиазагрузчик, 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. Остался вопрос почему этот код за одно и в бакенде не меняет визуализацию настроек.
Ну он и не должен в настройках ничего менять. Вы же сказали вам принудительно в форме надо изменить настройки.
Если надо и в менеджере менять - то возможно этот фильтр подойдет
Но юзер сможет изменить значения, если и от этого надо защититься - то надо искать, думаю есть за что зацепиться при сохранении опция и подменить значения на нужные