Может ли кто-нибудь помочь мне оптимизировать мой запрос в WordPress?
Код PHP
$serSlugSearchWord = seoUrl($post->post_title);
$serSlugSearchWord_obj = explode("-", $serSlugSearchWord);
foreach ($serSlugSearchWord_obj as $item )
{
$queryStringKeyWords .= " if( INSTR(post_name, '$item')>0 ,1,0) +";
}
$queryStringKeyWords = preg_replace("/\+$/", "", $queryStringKeyWords);
$theQuery = "Select
$queryStringKeyWords
as my_rate,
`wp_posts`.*
from `wp_posts`
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
order by my_rate desc limit 0, 10";
global $wpdb;
$wpdb->get_row($theQuery, 'ARRAY_N');
запрос выглядит так (и прекрасно работает)
Select if( INSTR(post_name, 'serengeti')>0 ,1,0) + if( INSTR(post_name, 'adventure')>0 ,1,0) as my_rate, `wp_posts`.* from `wp_posts`
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
order by my_rate desc limit 0, 10
и теперь я хочу только сообщения из категории 1 и 5
INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = ID
AND wp_term_relationships.term_taxonomy_id = 1
OR wp_term_relationships.term_taxonomy_id = 5
но когда я добавляю эти строки в код
Select if( INSTR(post_name, 'serengeti')>0 ,1,0) + if( INSTR(post_name, 'adventure')>0 ,1,0) as my_rate, `wp_posts`.* from `wp_posts`
INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = ID
AND wp_term_relationships.term_taxonomy_id = 1
OR wp_term_relationships.term_taxonomy_id = 5
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
order by my_rate desc limit 0, 10
это разбило мое веб-пространство (сервер). Но почему?
Кстати: этот запрос только для администратора.
(обновлено) вы можете попробовать это? Условие ИЛИ помещается в скобки.
Select if( INSTR(post_name, 'serengeti')>0 ,1,0) + if( INSTR(post_name, 'adventure')>0 ,1,0) as my_rate, `wp_posts`.* from `wp_posts`
INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = ID
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
AND wp_term_relationships.term_taxonomy_id in (1,5)
order by my_rate desc limit 0, 10
Других решений пока нет …