Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2017, 18:49   #1
rustamcom2
 
Регистрация: 13.03.2017
Сообщений: 8
По умолчанию Как передать переменную из одной функции в другую функции

Все привет. Есть такое код
Код:
<?php
add_filter( 'request', 'my_request' );
function my_request( $query_vars ){
	global $id_vehicle;

	$request = urldecode($_SERVER['REQUEST_URI']);

	if(preg_match ('#/used-cars/(.+?)/#', $request, $id))
	{

		 $id_vehicle = intval($id[1]);
	}

	return $query_vars;
}

define( 'WPCCI_PLUGIN_DIR', untrailingslashit( dirname( __FILE__ ) ) );
define( 'WPCCI_PLUGIN_URL', untrailingslashit( plugins_url( '', __FILE__ ) ) );

require_once WPCCI_PLUGIN_DIR . '/class/carcopy_seller_api.php';

function carcopy_integration_func( $atts ){
	global $id_vehicle;
$atts = shortcode_atts( array(
'limit' => 20,
'login' => null,
'password' => null,
'seller_id' => 0,
'type' => 0,
'sort' => 'price',
'sort_dir' => 'asc',
'include_title' => true
), $atts );
if ( is_null($atts['login']) || is_null($atts['password']))
return __('Отсутствуют авторизационные данные');

// Подготовка переменных
$filter_data = array();
$search_data = array();
$html_pager = "";

	
$page = intval(get_query_var('paged', 1));
if (!$page)
$page = 1;
foreach (array('limit', 'seller_id', 'type') as $field)
$atts[$field] = intval($atts[$field]);
foreach (array('include_title') as $field)
$atts[$field] = ($atts[$field]==='false' || !$atts[$field] ? false:true);

$conditions = ($atts['seller_id'] ? array('seller_id' => $atts['seller_id']):array());

// Подключить стили и javascript
wp_enqueue_script('jquery.chained', WPCCI_PLUGIN_URL.'/js/jquery.chained.min.js', array('jquery'));
wp_enqueue_script('wpcci-scripts', WPCCI_PLUGIN_URL.'/js/scripts.js', array('jquery.chained'));
wp_register_style('wpcci-styles', WPCCI_PLUGIN_URL.'/css/styles.css');
wp_enqueue_style('wpcci-styles');

// Подключаем фиксируещие стили и скрипты, если они есть (для корекции дизайна под конкретный дизайн)
if (file_exists(WPCCI_PLUGIN_DIR.'/js/fix_scripts.js'))
wp_enqueue_script('wpcci-fix-scripts', WPCCI_PLUGIN_URL.'/js/fix-scripts.js', array('wpcci-scripts'));
if (file_exists(WPCCI_PLUGIN_DIR.'/css/fix-styles.css')) {
wp_register_style('wpcci-fix-styles', WPCCI_PLUGIN_URL.'/css/fix-styles.css');
wp_enqueue_style('wpcci-fix-styles');
}

// Установить авторизационные параметры
carcopy_seller_api::set_auth($atts['login'], $atts['password']);

// Если указан идентификатор автомобиля - отобразить детальную информацию
if ($id_vehicle) {
$detail_cache_data_name = 'wpcci_vehicle_detail_'.$id_vehicle;
if (false === ($vehicle_data = get_transient( $detail_cache_data_name ))) {
$vehicle_data = carcopy_seller_api::get_vehicle_detail($id_vehicle);
set_transient($detail_cache_data_name, $vehicle_data, 1 * HOUR_IN_SECONDS);
}
return html_detail_result($vehicle_data);
}
	
// Получить варианты значений для фильтра
$filter_cache_data_name = 'wpcci_filter_values_'.crc32(serialize($atts));
if (false === ($filter_data = get_transient( $filter_cache_data_name ))) {
$filter_data = carcopy_seller_api::get_filters($atts['type'], $conditions);
set_transient($filter_cache_data_name, $filter_data, 1 * HOUR_IN_SECONDS);
}

// Если произошла ошибка, вернуть их вывод
$html = html_errors($data);
if ($html)
return $html;

// Получить результаты поиска
if ($filter_data['data']['makes']) {
$filter_vars = get_filter_vars();
$conditions = get_search_conditions($filter_vars, $conditions);
$from = ($page-1)*$atts['limit'];
$search_cache_data_name = 'wpcci_search_values_'.crc32(serialize($atts + $filter_vars + array('from'=>$from)));
if (false === ($search_data = get_transient($search_cache_data_name))) {
$search_data = carcopy_seller_api::get_vehicles($atts['type'], $conditions, $atts['sort'], $atts['sort_dir'], $from, $atts['limit']);
set_transient($search_cache_data_name, $search_data, 1 * HOUR_IN_SECONDS);
}
}

// Вернуть вывод формы и результатов поиска
$html .= html_filter_form($filter_data);
$html .= html_search_result($search_data, $atts);
return $html;
}

/**
* Приведение типов данных фильтра
*/
function get_filter_vars() {
$filter = isset($_REQUEST['filter']) ? (array)$_REQUEST['filter']:array();
foreach (array('make'=>'int', 'model'=>'str', 'gearbox'=>'int', 'price_from'=>'int', 'price_to'=>'int', 'from_year'=>'int', 'to_year'=>'int') as $field => $type) {
if (isset($filter[$field])) {
if ($type=='int') {
$filter[$field] = intval($filter[$field]);
if ($filter[$field]<=0)
unset($filter[$field]);
} else {
$filter[$field] = trim($filter[$field]);
if ($filter[$field]=='')
unset($filter[$field]);
}
}
}
return $filter;
}

/**
* Формирование массива условий для поиска
*/
function get_search_conditions($filter, $conditions = array()) {
foreach (array('make', 'model', 'gearbox', 'price_from', 'price_to') as $field) {
if (isset($filter[$field])) {
$conditions[$field] = $filter[$field];
}
}
if (isset($filter['from_year']))
$conditions['dates']['first_registration_from'] = $filter['from_year'];
if (isset($filter['to_year']))
$conditions['dates']['first_registration_to'] = $filter['to_year'];
return $conditions;
}

function get_price_str($price) {
return str_replace(array('RUB','USD','EUR') , array('Руб','$','€'), $price);
}


function html_detail_result(&$data) {
ob_start();
	//print_r($data);
$vdata = &$data['data']['vehicle'];
$title = $vdata['make']['val'].' '.$vdata['model']['val'].' '.$vdata['first_registration']['val'].'г.';
$price = get_price_str($vdata['price']['val']);
	
return ob_get_clean();
}


/**
* Возвращает html ошибок
*/
function html_errors(&$data) {
if (!isset($data['errors']) || !is_array($data_errors))
return '';
ob_start();
echo '<ul class="wpcci-errors">', PHP_EOL;
foreach ($data['errors'] as $error)
echo '<li>', esc_html(__($error)), '</li>', PHP_EOL;
echo '</ul>',PHP_EOL;
return ob_get_clean();
}

function custom_detail_title( $title, &$data  ) {
  	$title = $price;

return $title;
 }
// Регистрация shortcode
add_shortcode( 'carcopy-integration', 'carcopy_integration_func' );
// Регистрация хука на изменения title в детальной информации об автомобиле
add_filter( 'wp_title', 'custom_detail_title', 20 );

?>
Как передать из функции html_detail_result в функцию custom_detail_title переменную $price

Последний раз редактировалось Alex11223; 13.03.2017 в 18:54.
rustamcom2 вне форума Ответить с цитированием
Старый 13.03.2017, 20:05   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Возьми $price из переменной $vehicle_data, обработай также (html_detail_result()) – и передавай хоть куда.
Andkorol вне форума Ответить с цитированием
Старый 14.03.2017, 13:16   #3
rustamcom2
 
Регистрация: 13.03.2017
Сообщений: 8
По умолчанию

Можно точнее
rustamcom2 вне форума Ответить с цитированием
Старый 14.03.2017, 13:33   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

У тебя есть переменная $vehicle_data, которая передаётся в функцию html_detail_result(), где из неё выделяются некоторые данные в переменную $price – которая тебе и нужна.
Возьми эту же переменную $vehicle_data, и сделай с ней то, что делает с ней функция html_detail_result() для получения $price – но уже без функции:
PHP код:
$custom_price get_price_str($vehicle_data['data']['vehicle']['price']['val']); 
Andkorol вне форума Ответить с цитированием
Старый 14.03.2017, 13:40   #5
rustamcom2
 
Регистрация: 13.03.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
У тебя есть переменная $vehicle_data, которая передаётся в функцию html_detail_result(), где из неё выделяются некоторые данные в переменную $price – которая тебе и нужна.
Возьми эту же переменную $vehicle_data, и сделай с ней то, что делает с ней функция html_detail_result() для получения $price – но уже без функции:
PHP код:
$custom_price get_price_str($vehicle_data['data']['vehicle']['price']['val']); 
Сделал так
Код:
function custom_detail_title( $title, &$data  ) {
  	
$title = get_price_str($vehicle_data['data']['vehicle']['price']['val']);  
return $title;
 }
$title на выходи пустой
rustamcom2 вне форума Ответить с цитированием
Старый 14.03.2017, 13:58   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Откуда у тебя в функции появилась переменная $vehicle_data?
И зачем в функцию передавать $title?
Andkorol вне форума Ответить с цитированием
Старый 14.03.2017, 14:12   #7
rustamcom2
 
Регистрация: 13.03.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Откуда у тебя в функции появилась переменная $vehicle_data?
И зачем в функцию передавать $title?
custom_detail_title обрабатывает тайтл страницы. а в html_detail_result храниться как я понимаю $price . Так мне нужно передать $price в функцию custom_detail_title чтобы поменять тайтл страницы.
rustamcom2 вне форума Ответить с цитированием
Старый 14.03.2017, 14:48   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ты отвечаешь не на те вопросы, которые тебе были заданы – а вместо этого пытаешься объяснить непонятно что.
Твоя функция ничего не обрабатывает – сейчас она пытается сформировать $title из ничего.
Если нужно передать в функцию $price – так и передавай туда уже готовое значение $price.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать результат одной функции в качестве аргумента другой Ka2R Помощь студентам 3 11.03.2015 17:55
Как передать результат javascript-функции в переменную C# Wiwyndra C# (си шарп) 0 26.11.2012 21:47
Передать процедуры и функции из одной DLL в другую Alter Общие вопросы Delphi 12 12.06.2011 00:39
Как передать значение пременной из одной функции в другую? mr.-parker Общие вопросы C/C++ 2 27.03.2010 15:01
Как можно передать переменную типа struct в качестве входных параметров функции kitty19 Помощь студентам 1 15.12.2009 17:43