Intereting Posts
Есть ли способ загрузить tiny_mce_popup.js через editor.windowManager.open? Загрузка изображения в многопользовательский режим не работает Функция wp_get_update_data () выполняется при каждом запросе администратора Удаление кода, добавленного в htaccess с помощью insert_with_markers Вкладка «Справка» панели инструментов Ajax не работает, если обработчик находится вне плагина подменю. Функция страницы Фильтрация переменных продуктов WooCommerce по уровню запасов с помощью meta_query Субтитры по умолчанию для видео Как заказать список таксономий? Сортировать по? Ссылки в социальных сетях на главной странице – в пределах сообщений / пост-цикла Самый эффективный способ вставки сообщения вне WordPress? Создание собственного короткого кода – переменная echoeing php на основе переменной JS Обнаружение смены устройства (рабочий стол, планшет или мобильный) в Настройщике Объявление зависимостей скриптов между сценариями, заключенными в разные действия Местоположение базы данных WP DB для значения индекса «Следующее сообщение для создания»

Как передать переменные из одной функции в другую или объединить функции

У меня есть две функции:

  • 1-й – берет на себя все настройки
  • 2nd – создает встроенный стиль из этих опций

В первой функции я устанавливаю переменные, из которых я создаю настройки и элементы управления для этого:

function im_customize_register( $wp_customize ) { //Custom Sections $wp_customize->add_section( 'body', array( 'title' => __('Body Settings', 'impressive'), 'priority' => 200 ) ); //Styles $bg_color = 'background-color:'; $max_width = 'max-width:'; $styles = array(); $styles[] = array( 'slug'=>'body_bcolor', 'default' => "#F1F2F1", 'label' => __('Body Background Color', 'impressive'), 'css_class' => 'body', 'attribute' => $bg_color, 'section' => 'body', 'type' => 'color' ); $styles[] = array( 'slug'=>'max_container_width', 'default' => '1440', 'label' => __('Maximal Container Width', 'impressive'), 'css_class' => '.header', 'attribute' => $max_width, 'section' => 'body', 'type' => 'number' ); foreach( $styles as $style ) { $wp_customize->add_setting( $style['slug'], array( 'default' => $style['default'], 'type' => 'option', 'capability' => 'edit_theme_options' ) ); if ( $style['type'] == 'color' ) { $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $style['slug'], array('label' => $style['label'], 'section' => $style['section'], 'settings' => $style['slug'], 'type' => $style['type']) ) ); } elseif ( $style['type'] == 'image' && $style['section'] == 'header_image' ) { $wp_customize->add_control( new WP_Customize_Header_Image_Control( $wp_customize, $style['slug'], array('section' => $style['section'], 'settings' => $style['slug']) ) ); } else { $wp_customize->add_control( new WP_Customize_Control( $wp_customize, $style['slug'], array('label' => $style['label'], 'section' => $style['section'], 'settings' => $style['slug'], 'type' => $style['type']) ) ); } } } add_action( 'customize_register', 'im_customize_register' ); 

Во второй функции мне нужно ввести одинаковые переменные, чтобы скрипт мог генерировать встроенный CSS:

 function im_custom_style_create() { wp_enqueue_style( 'im_custom_style', get_template_directory_uri() . '/css/im_custom_style.css' ); $custom_css = ''; $bg_color = 'background-color:'; $max_width = 'max-width:'; $measurement_unit = ''; $styles = array(); $styles[] = array( 'slug'=>'body_bcolor', 'default' => "#F1F2F1", 'label' => __('Body Background Color', 'impressive'), 'css_class' => 'body', 'attribute' => $bg_color, 'section' => 'body', 'type' => 'color' ); $styles[] = array( 'slug'=>'max_container_width', 'default' => '1440', 'label' => __('Maximal Container Width', 'impressive'), 'css_class' => '.header', 'attribute' => $max_width, 'section' => 'body', 'type' => 'number' ); foreach( $styles as $style ) { if ( $style['attribute'] == $max_width ) { $measurement_unit = 'px'; } if ( get_option( $style['slug'] ) == true ) { $custom_css = '' . $style['css_class'] . ' { ' . $style['attribute'] . ' ' . get_option( $style['slug'] ) . $measurement_unit . '; } '; }; wp_add_inline_style ('im_custom_style', $custom_css); } } add_action( 'wp_enqueue_scripts', 'im_custom_style_create' ); 

Мой вопрос: есть ли способ передать $styles от 1-й функции до второй или нет, я не могу объединить эти две функции. Я попытался объединить их, но я не мог сделать волшебство.

Есть два способа, которые были бы самыми простыми.

  1. Сделайте это с помощью вызова функции.

  2. Сделайте переменные глобальными.

Первое будет сделано так:

 function my_func() { $styles = 'stuff'; second_func($styles); } function second_func($styles) { // do something with $styles var_dump($styles); } 

Второй способ будет выполнен следующим образом:

 // Set global variable $GLOBALS['styles'] = 'stuff'; // Call it anywhere else global $styles; 

Дополнительные сведения о глобальных значениях: http://php.net/manual/en/language.variables.scope.php

EDIT: см. Ниже.

 global $styles; $styles = array( array( 'slug'=>'body_bcolor', 'default' => "#F1F2F1", 'label' => __('Body Background Color', 'impressive'), 'css_class' => 'body', 'attribute' => 'background-color:', 'section' => 'body', 'type' => 'color' ), array( 'slug'=>'max_container_width', 'default' => '1440', 'label' => __('Maximal Container Width', 'impressive'), 'css_class' => '.header', 'attribute' => 'max-width:', 'section' => 'body', 'type' => 'number' ) ); function im_customize_register( $wp_customize ) { global $styles; //Custom Sections $wp_customize->add_section( 'body', array( 'title' => __('Body Settings', 'impressive'), 'priority' => 200 ) ); foreach( $GLOBALS['styles'] as $style ) { $wp_customize->add_setting( $style['slug'], array( 'default' => $style['default'], 'type' => 'option', 'capability' => 'edit_theme_options' ) ); if ( $style['type'] == 'color' ) { $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $style['slug'], array('label' => $style['label'], 'section' => $style['section'], 'settings' => $style['slug'], 'type' => $style['type']) ) ); } elseif ( $style['type'] == 'image' && $style['section'] == 'header_image' ) { $wp_customize->add_control( new WP_Customize_Header_Image_Control( $wp_customize, $style['slug'], array('section' => $style['section'], 'settings' => $style['slug']) ) ); } else { $wp_customize->add_control( new WP_Customize_Control( $wp_customize, $style['slug'], array('label' => $style['label'], 'section' => $style['section'], 'settings' => $style['slug'], 'type' => $style['type']) ) ); } } } add_action( 'customize_register', 'im_customize_register' ); function im_custom_style_create() { global $styles; wp_enqueue_style( 'im_custom_style', get_template_directory_uri() . '/css/im_custom_style.css' ); foreach( $styles as $style ) { if ( $style['attribute'] == $max_width ) { $measurement_unit = 'px'; } if ( get_option( $style['slug'] ) == true ) { $custom_css = '' . $style['css_class'] . ' { ' . $style['attribute'] . ' ' . get_option( $style['slug'] ) . $measurement_unit . '; } '; }; wp_add_inline_style ('im_custom_style', $custom_css); } } add_action( 'wp_enqueue_scripts', 'im_custom_style_create' );