Хорошо, вот что происходит ...
Я собираю список самых популярных постов из Google Analytics и помещаю их в массив
$thisnumber = 0;
$start = date('Y-m-d', (time() - (60 * 60 * 24 * 30)));
$end = date('Y-m-d');
$limit = $getnumber;
$titles = array();
$login = new GADWidgetData();
$ga = new GALib($login->auth_token, $login->account_id, 60);
$pages = $ga->pages_for_date_period($start, $end);
foreach($pages as $page) :
$title = $page['children']['value'];
$titlearray = explode(' |', $title, -1);
$titlesub = implode( "", $titlearray);
$thetitles[] = $titlesub;
$thisnumber++;
if($thisnumber > ($getnumber*2)) break;
endforeach;
$titles_list = implode( ",", $thetitles);
Итак, после всего этого у меня остался и массив заголовков в $ thetitles, и список заголовков, сохраненных в $ title_list
, теперь мне нужно отправить все эти заголовки на полный запрос wordpressпоэтому у меня есть функция:
function get_post_by_title($page_title, $output = OBJECT) {
global $wpdb;
$post = $wpdb->get_var( $wpdb->prepare( "
SELECT wposts.*
FROM $wpdb->posts wposts
WHERE post_title = %s
AND post_type='post'
AND post_status = 'publish'", $page_title ));
if ( $post )
return get_post($post, $output);
return null;
}
К сожалению, это может быть куча запросов, и на сильно загруженном сайте это может затормозить.Я пытался использовать функцию SQL IN, но думаю, что я делаю это неправильно
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE post_title IN ($titles_list)
AND wposts.post_status = 'publish'
AND wposts.post_type = 'post'";
$pageposts = $wpdb->get_results($querystr, OBJECT);
Может ли кто-нибудь с лучшим foo для SQL / Wordpress помочь мне?