it-swarm.com.ru

Как добавить новые типы опций в дерево опций?

Я использую дерево параметров в режиме темы и в режиме дочерней темы, и я пытаюсь добавить новые типы параметров. Новые типы опций будут основаны на типе опций post-select, но будут отображать только сообщения из определенной категории.

Я создал новый файл и добавил его в массив включаемых файлов, который начинается в строке 178 файла ot-loader.php. В новом файле я вырезал и вставил тип опции post-select, который начинается в строке 905 /include/ot-functions-options-type.php. Вы можете увидеть этот новый файл здесь .

В моем сообщении выберите тип опции, я добавил уникальный псевдоним к имени функции. Я также поместил этот слаг в класс .ss-post-select класса css для внешней оболочки настроек формата. В массиве записей пост-запроса я добавил параметр категории.

Затем я добавил свой новый тип параметра "Выбор поста" в параметры темы, надеясь, что он будет отображать только сообщения в заданной мной категории. Это показали сообщения из всех категорий. Интересно, что опция была заключена в .type-post-select. Я также создал обычный пост-выбор, который не имел модифицированного CSS.

В качестве эксперимента я устал добавлять параметр категории в исходную опцию post-select таким же образом, и он работал точно так, как я ожидал - показывать только сообщения из этой категории. К сожалению, мне нужно создать 6 новых сообщений, каждый из которых показывает сообщения из другой категории.

Я явно пропускаю шаг, но за свою жизнь не могу его найти. Я искал другое место, где нужно зарегистрировать типы опций или что-то еще, но не смог найти его ...

7
JPollock

То, что вы пытаетесь сделать, может быть выполнено без редактирования файлов ядра в OptionTree. Добавьте функции пользовательских опций типа к темам functions.php, а также к следующему коду.

/**
 * Filter to add custom option types.
 *
 * @param     array     An array of option types.
 * @return    array
 */
function add_custom_option_types( $types ) {

  $types['post_select_a_1'] = 'Post Select option type. (_a_1)';
  $types['post_select_a_2'] = 'Post Select option type. (_a_2)';
  $types['post_select_a_3'] = 'Post Select option type. (_a_3)';
  $types['post_select_a_4'] = 'Post Select option type. (_a_4)';
  $types['post_select_a_5'] = 'Post Select option type. (_a_5)';
  $types['post_select_a_6'] = 'Post Select option type. (_a_6)';

  return $types;

}
add_filter( 'ot_option_types_array', 'add_custom_option_types' );

Это автоматически загрузит ваши функции в OptionTree, и вам не нужно редактировать какие-либо файлы ядра. При добавлении новых параметров предъявляются два требования. Во-первых, все функции должны начинаться с ot_type_. Во-вторых, при добавлении в массив параметров новые ключи массива должны совпадать с именем функции минус ot_type_, при создании ключа вы можете использовать - или _. Так что если у вас есть пользовательская функция с именем ot_type_super_awesome, вы можете добавить ее в фильтруемый массив с помощью:

$types['super_awesome'] = 'Super Awesome';

или же

$types['super-awesome'] = 'Super Awesome';

Я надеюсь, что это устранит любую путаницу. На заметке есть два ot_type_post_select_a_5 в файле, который вы создали, и я предполагаю, что последним должен быть ot_type_post_select_a_6. Ура!

4
Derek Herman