2016-01-14 3 views
0

Мне нужно отредактировать чей-то код, и я не знаком с запросами сообщений, используя метод, которым они являются. Я попытался изменить запрос на различные альтернативы, но мне не повезло. Я хочу изменить следующий запрос, чтобы выбрать данные из пользовательской таксономии, называемой «job_cat», где значение равно значению POST. Код ниже:Пользовательский запрос WordPress для таксономии

$querystr = " 
SELECT DISTINCT wposts.* 
FROM $wpdb->posts wposts 
LEFT JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id 
LEFT JOIN $wpdb->postmeta wpostmeta2 ON wposts.ID = wpostmeta2.post_id 
LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id) 
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) 
WHERE wp_term_taxonomy.term_id = 94"; 
// If a job type is set and not equal to nothing or any jobs 


if(isset($_POST['search-location']) && $_POST['search-location'] !== "" &&  $_POST['search-location'] !== "All") { 
    $querystr .= " AND (wpostmeta2.meta_key = 'region' AND wpostmeta2.meta_value  = '".$_POST['search-location']."')"; 
} 
    $querystr .= " ORDER BY post_date DESC LIMIT 50"; 

//Execute 
//echo $querystr; 
$pageposts = $wpdb->get_results($wpdb->prepare($querystr, OBJECT)); 

Любая помощь была бы замечательной !!

+3

** ВНИМАНИЕ: ** * Ваш код уязвим для атаки SQL-инъекций! * Прочтите историю [Bobby Tables] (http://bobby-tables.com) для получения дополнительной информации. – eggyal

+0

Предположим, вы используете пользовательский запрос, а не класс WP_Query. Можете ли вы подтвердить, что 'wpostmeta' - это имя вашей таблицы? – pgk

+0

Где находится остальная часть строки запроса? Вы не делили эту часть до 'AND'. – rnevius

ответ

0

Этот код чрезвычайно опасен для использования на сайте WordPress. Вам нужно удалить его и любой другой файл шаблона, содержащий SQL-запросы, подобные этому.

Вместо этого используйте WP_Query, который автоматически санирует ваши запросы SQL. У него есть огромное количество параметров, которые вы можете установить для запроса чего-либо из WordPress. Вот пример использования WP_Query для получения сообщений по данной таксономии, с tax_query.

<?php 
// 1- Setup an argument to give to WP_Query 
$taxonomy_args = array(
    // 2- use the tax_query to examine a taxonomy 
    'tax_query' => array(
    array(
     'taxonomy' => 'job_cat', 
     'terms' => 'XYZ', 
     'field' => 'slug', 
     'include_children' => true, 
     'operator' => 'IN' 
    ) 
), 
    // 3- Make sure to define how many posts and what post-type they should be 
    'posts_per_page' => 50, 
    'post_type' => 'search-location', 
); 

$s = new WP_Query($some_args); 

if ($s->have_posts()) : $s->the_post(); 
    // 4- Here you will manipulate the data you get back 
endif; 
?> 
Смежные вопросы