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

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

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

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

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

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

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

7 голосов | спросил JPollock 27 J0000006Europe/Moscow 2013, 03:06:47

1 ответ


4

То, что вы пытаетесь сделать, может быть выполнено без редактирования основных файлов в 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. Ура!

ответил Derek Herman 27 J0000006Europe/Moscow 2013, 07:01:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132