@habrdima

Как добавить скрипт через php в wordpress?

Вот код
<?php
global $colWidth;

if(wp_is_mobile()){
    $colWidth = 300;
}else{
    $colWidth = 270; 
}
function f() { ?> 
  <script>
      var a = <?php echo $colWidth; ?>
  </script>
<?php } 
add_action('wp_footer', 'f', 99);

код находится в моем плагине
он добавляет в подвал скрипт,
разбираюсь не очень в php и wordpress,
такое добавление нашел в интернете, естественно без строчки php в скрипте,
не пойму что это за добавление когда функция f находится в области php, а script нет?
и как из php добавить в переменную var a данные?
  • Вопрос задан
  • 473 просмотра
Пригласить эксперта
Ответы на вопрос 3
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
function f() {
	if (wp_is_mobile()) {
		$colWidth = 300;
	} else {
		$colWidth = 270;
	}
	?> 
	<script>
		var a = <?php echo $colWidth; ?>;
	</script>
	<?php
}

add_action( 'wp_footer', 'f', 99 );

Видимо, так нужно?
Ответ написан
Fqyeh29
@Fqyeh29
↓ ИМХО ↓
add_action('wp_footer', 'f', 99); - когда рендерится футер, запускается функция "f"

По сути то что вне F, выполнится сразу. Ее тоже можно в F засунуть
Ответ написан
Комментировать
san_jorich
@san_jorich
Творческий кодер
А зачем так ? Подключайте js правильно.
function js_includer(){
	//wp_enqueue_script('jquery');
	wp_enqueue_script('js_functions', plugin_dir_url( __FILE__ ). '/footer_js.js');
	wp_localize_script( 'js_functions', 'ajaxurl', admin_url( 'admin-ajax.php' ) );
}
add_action( 'wp_enqueue_scripts', 'js_includer' );

function if_mobile(){
   if(wp_is_mobile()){ $colWidth = 300; } else { $colWidth = 270;  }
   echo $colWidth;
}
add_action( 'wp_ajax_if_mobile', 'if_mobile' );
add_action( 'wp_ajax_nopriv_if_mobile', 'if_mobile' );

И соответствеено footer_js.js
jQuery(document).ready(function() {

jQuery.ajax({
		  type:"POST",
		  url: ajaxurl,
		  data: {
		      action: "if_mobile",		     
		  },
		  success:function(data){ /* Сюда приходит результат php. Не совсем понятно что вы с ним делаете. Возможно Вам нужен JSON и js-изменение ширины окна, блока итд.. для проверки console.log */ console.log(result) },
		  error: function(errorThrown){ alert(errorThrown); } 
		});

}
// Код написан в качестве примера. Нужны правки и доработки

А вообще мне кажется, что проверять на устройство\браузер итд можно на чистом js. Тогда Вам ajax-оборот лишний. Пишите плагин с подключением js в котором решается все.
JS Определение устройства
Изменение ширины
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы