WebTutorWordPressWPML — выбрать посты по языку в админке или на фронтенде

WPML — выбрать посты по языку в админке или на фронтенде

Иногда бывает очень нужно получить для каких-то целей список постов по текущему языку сайта. Если это выполнять на frontend части сайта — то через функцию get_posts с параметром ‘suppress_filters’ => ‘false’ эту задачу можно с легкостью решить. Но что, если нужно в админке написать кастомную страницу, для настроект например, и на ней сделать то же самое. То здесь первый способ не поможет

Выбираем посты по языку сайта WPML на FrontEnd части сайта

$args = array (
	'post_type'        => 'news',
	'numberposts'      => 5,
	'orderby'          => 'menu_order',
	'order'            => 'ASC',
	'suppress_filters' => false,
);
$all_news = get_posts( $args );

Но в части админки сайта этот способ не работает. Здесь нужно создать кастомный запрос.

Выбираем посты по языку сайта WPML в админке сайта

И так, чтобы получить в админке сайта список постов по текущему языку — нужно выполнить такой код:

global $wpdb;
$query_string = "SELECT wposts.*
    FROM `" . $wpdb->posts . "` as wposts, wp_icl_translations
    WHERE wposts.ID = wp_icl_translations.element_id
    AND wp_icl_translations.language_code = 'ru'
    AND wposts.post_status = 'publish'
    AND wposts.post_type = 'news'
    ORDER BY wposts.post_date DESC LIMIT 10";
$result_new = $wpdb->get_results( $query_string, OBJECT );

Здесь идет прямой запрос в базу и по идентификатору таблицы переводов WPML мы получил посты из таблицы posts, которые переведены на нужный нам язык.

Соответственно не забудьте в нем заменить post_type, language_code, LIMIT и префиксы таблиц.

Просмотров: 58

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *