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

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

Вот пример комбо-функции 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' ) ) ); } }