Intereting Posts
WordPress4.1.15 Ссылки на панели мониторинга не работают Варианты продукта WooCommerce не отображаются в корзине, корзине или кассе Показывать значения персонализированной почты на странице «Добавить новую почту»? Изменение заголовка сообщения во время процесса сохранения сообщений Изменить форму поиска Twentyeleven Text Импорт сообщений через MySql (файл csv) должен быть автоматически опубликован Изменить функцию, чтобы возвращать только значения для пользователя, который вошел в систему Показать последние 12 загруженных изображений на главной странице, но только с сообщений Постоянная ссылка изменяется при редактировании опубликованной публикации в пользовательском типе сообщения WP фильтр для изменения стилей администрирования CSS? Почему get_posts () возвращает пустой массив, пока я пытаюсь получить сообщения из некоторых конкретных таксономий и правильно работать с другими? Файлы WordPress Core не игнорируются Git Колонка администратора не заполняется данными Множественная петля, нарушающая боковую панель Разбивка страниц не работает на должности категории

Динамическое создание функций и крючков

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

Вот пример комбо-функции hook / function:

add_action( 'woocommerce_single_product_summary', 'cx_inputKVA_show', 5 ); function cx_inputKVA_show() { global $product; // Do not show this on variable products if ( $product->product_type <> 'variable' ) { $inputKVA = get_post_meta( $product->id, 'cx_inputKVA', true ); if ( $inputKVA <> '' ) { echo '<div class="woocommerce_msrp">'; _e( 'Input KVA: ', 'woocommerce' ); echo '<span class="woocommerce-cx_inputKVA">' . _e( $inputKVA ) . '</span>'; echo '</div>'; } } } 

Я хочу использовать массив вроде:

 $fieldset = array( array( 1 => 'slug', 2 => 'title' ) array( 1 => 'slug', 2 => 'title' ) ); 

Затем используйте цикл foreach() для генерации 3-х крючков и 3-х функций для каждого вложенного массива. Раньше я просто писал каждый отдельно, но теперь мне нужно сгенерировать 23 элемента, и это слишком много кода, слишком беспорядочный для изменения.

Это сделало бы крючок как:

 add_action( 'woocommerce_single_product_summary', 'cx_[plug]_show', 5 ); 

и функция, подобная

 function cx_inputKVA_show() { global $product; // Do not show this on variable products if ( $product->product_type <> 'variable' ) { $[plug] = get_post_meta( $product->id, 'cx_[plug]', true ); if ( $[plug] <> '' ) { echo '<div class="woocommerce_msrp">'; _e( '[title]: ', 'woocommerce' ); echo '<span class="woocommerce-cx_[plug]">' . _e( $[plug] ) . '</span>'; echo '</div>'; } } } 

Ответ —————— Поскольку Мило гений, я сделал это намного проще, просто перейдя через массив внутри функции вместо того, чтобы пытаться создать новую функцию динамически для каждого элемента. Массив содержит атрибуты «slug» и «title», и вот функция:

 function cx_product_field() { global $fieldset; foreach ( $fieldset as $field ){ woocommerce_wp_text_input( array( 'id' => 'cx_'.$field['slug'], 'class' => 'wc_input_text', 'label' => __( $field['title'], 'woocommerce' ) ) ); } } 

Solutions Collecting From Web of "Динамическое создание функций и крючков"

Поскольку Мило – гений, я сделал это намного проще, просто перейдя через массив внутри функции, вместо того, чтобы пытаться генерировать новую функцию динамически для каждого элемента. Массив содержит атрибуты «slug» и «title», и вот функция:

 function cx_product_field() { global $fieldset; foreach ( $fieldset as $field ){ woocommerce_wp_text_input( array( 'id' => 'cx_'.$field['slug'], 'class' => 'wc_input_text', 'label' => __( $field['title'], 'woocommerce' ) ) ); } }