Я использую wordpress с qTranslate и настраиваемой темой. Тема сопровождается поиском автозаполнения. Моя проблема в том, что заголовки сообщений/страниц не переведены. Я проверил stackoverflow/google и, похоже, возникла проблема с запросами AJAX и qTranslate. Вот почему я добавил к параметру URL-адрес моего файла PHP следующее:Проблемы с Wordpress с qTranslate и AJAX
?lang='.qtrans_getLanguage()
Я проверил консоль и параметр передается правильно (для каждого языка) для файла JavaScript. Теперь мне нужно прочитать этот параметр url и вернуть его в свой php-файл (я тестировал файл js с добавлением lang=en
к URL-адресу при использовании $.getJSON
, и он работал, но мне нужен переданный язык).
PHP
<?php
add_action('init', 'myprefix_autocomplete_init');
function myprefix_autocomplete_init() {
// Register our jQuery UI style and our custom javascript file
wp_register_script('my_acsearch', get_template_directory_uri() . '/nectar/assets/functions/ajax-search/wpss-search-suggest.js?lang='.qtrans_getLanguage(), array('jquery','jquery-ui-autocomplete'),null,true);
wp_localize_script('my_acsearch', 'MyAcSearch', array('url' => admin_url('admin-ajax.php')));
// Function to fire whenever search form is displayed
add_action('get_search_form', 'myprefix_autocomplete_search_form');
// Functions to deal with the AJAX request - one for logged in users, the other for non-logged in users.
add_action('wp_ajax_myprefix_autocompletesearch', 'myprefix_autocomplete_suggestions');
add_action('wp_ajax_nopriv_myprefix_autocompletesearch', 'myprefix_autocomplete_suggestions');
}
function myprefix_autocomplete_search_form(){
wp_enqueue_script('my_acsearch');
}
add_action('wp_ajax_{action}', 'my_hooked_function');
add_action('wp_ajax_nopriv_{action}', 'my_hooked_function');
function myprefix_autocomplete_suggestions(){
$search_term = $_REQUEST['term'];
$search_term = apply_filters('get_search_query', $search_term);
$search_array = array(
's'=> $search_term,
'showposts' => 6,
'post_type' => 'any',
'post_status' => 'publish',
'post_password' => '',
'suppress_filters' => true
);
$query = http_build_query($search_array);
$posts = get_posts($query);
// Initialise suggestions array
$suggestions=array();
global $post;
foreach ($posts as $post): setup_postdata($post);
$suggestion['lang'] = $_GET['lang'];
$suggestion['label'] = esc_html(qtrans_use(qtrans_getLanguage(), $post->post_title, true));
$suggestion['link'] = get_permalink();
$suggestion['image'] = (has_post_thumbnail($post->ID)) ? get_the_post_thumbnail($post->ID, 'thumbnail', array('title' => '')) : '<i class="icon-salient-pencil"></i>' ;
if(get_post_type($post->ID) == 'post'){
$suggestion['post_type'] = __('Blog Post',NECTAR_THEME_NAME);
} else if(get_post_type($post->ID) == 'page'){
$suggestion['post_type'] = __('Page',NECTAR_THEME_NAME);
} else if(get_post_type($post->ID) == 'portfolio'){
$suggestion['post_type'] = __('Portfolio Item',NECTAR_THEME_NAME);
//show custom thumbnail if in use
$custom_thumbnail = get_post_meta($post->ID, '_nectar_portfolio_custom_thumbnail', true);
if(!empty($custom_thumbnail)){
$attachment_id = pn_get_attachment_id_from_url($custom_thumbnail);
$suggestion['image'] = wp_get_attachment_image($attachment_id,'portfolio-widget');
}
} else if(get_post_type($post->ID) == 'product'){
$suggestion['post_type'] = __('Product',NECTAR_THEME_NAME);
}
// Add suggestion to suggestions array
$suggestions[]= $suggestion;
endforeach;
// JSON encode and echo
$response = $_GET["callback"] . "(" . json_encode($suggestions) . ")";
echo $response;
// Don't forget to exit!
exit;
}
?>
JS
jQuery(document).ready(function ($){
var acs_action = 'myprefix_autocompletesearch';
$("#s").autocomplete({
delay: 50,
position: {of: "#search-outer #search .container" },
appendTo: $("#search-box"),
source: function(req, response){
$.getJSON(MyAcSearch.url+'?callback=?&action='+acs_action, req, response);
},
select: function(event, ui) {
window.location.href=ui.item.link;
},
minLength: 2,
}).data("ui-autocomplete")._renderItem = function(ul, item) {
return $("<li>")
.append("<a>" + item.image + "<span class='title'>" + item.label + "</span><br/><span class='desc'>" + item.post_type + "</span> </a>")
.appendTo(ul);
};
});
Я надеюсь, что кто-то может помочь мне с этим