У меня для этого есть три файла. Мой основной файл php, functions.php, затем мой файл js.
Как передать эту переменную php в js? Вот мой код для моего ГЛАВНЫЙ ФАЙЛ PHP
function ccss_show_tag_recipes() {
global $post;
global $wp;
$html = '';
$url = home_url( $wp->request );
$path = parse_url($url, PHP_URL_PATH);
$pathFragments = explode('/', $path);
$currentPage = end($pathFragments); //I WANT TO PASS THIS TO MY JS FILE
$term_tags = get_terms('cp_recipe_tags');
$term_cats = get_terms('cp_recipe_category');
$recipetype = array();
$recipecat = array();
foreach($term_tags as $term) {
$recipetype[] = $term->slug;
}
foreach($term_cats as $term) {
$recipecat[] = $term->slug;
}
if ( in_array( $currentPage , $recipecat ) ) {
$html = ccss_load_phases($html,$currentPage);
}
}
Вот функция для css_load_phases ();
function ccss_load_phases($html = '',$currentPage){
//CODE HERE etc
$html .= '<div id = "btn-wrapper-'.$termid.'" class = "btn-wrapper"><a id = "'.$termid.'" class = "load-more-btn" href = "#">Load more recipes</a></div>';
}
Этот код выше предназначен для запуска вызова Ajax. Все, что я могу получить, - это идентификатор кнопки.
Вот код файла AJAX:
(function($) {
$(document).on( 'click', 'a.load-more-btn', function( event ) {
var a = $(this).attr('id'); // I CAN ONLY GET THE ID SINCE IT WAS TRIGGERED BY BUTTON CLICK, how to include $currentPage?
var button = $(this),
data = {
'action': 'ajax_loadmore',
'termID': a
};
event.preventDefault();
$.ajax({
url: ajaxloadmore.ajaxurl,
data: data,
type: 'post',
beforeSend : function () {
button.text('Loading...'); // change the button text, you can also add a preloader image
},
success: function( result ) {
//console.info(data.post_gallery_imgs);
$('#cooked-recipe-list-'+a+' ').append(result).fadeIn();
c
//alert( result );
},
complete: function() {
button.remove(); // if no data, remove the button as well
//$('body').find('a#'+a+'').remove();
}
})
})
})(jQuery);
Как передать эту переменную php $ currentPage в мой файл Ajax / Js? так что я могу использовать его здесь:
add_action( 'wp_ajax_nopriv_ajax_loadmore', 'my_ajax_loadmore' );
add_action( 'wp_ajax_ajax_loadmore', 'my_ajax_loadmore' );
function my_ajax_loadmore() {
$termID = $_POST['termID']; //ONLY THE BUTTON ID WAS RETRIEVED
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В вашей функции ccss_load_phases включите скрытый ввод.
function ccss_load_phases($html = '',$currentPage){
$html .= '<div id = "btn-wrapper-'.$termid.'" class = "btn-wrapper">
<a id = "'.$termid.'" class = "load-more-btn" href = "#">Load more recipes</a>
<input type = "hidden" id = "currentPage" value = "'.$currentPage.'" />
</div>';
}
Теперь у вас должна быть возможность получить доступ к этому в своем javascript, указав:
$('#currentPage').val(); или это value();
Я обычно записываю значение переменной в скрытый тип ввода, а затем обращаюсь к нему с идентификатором или именем
Основной файл php:
echo "<input type='hidden' value='$currentPage' name='currenPage' id='currentPage'>";
.js файл
$("#currentPage").val()
кому-нибудь помочь? Спасибо