使用 PolyLang 按类别和语言获取帖子
Get posts by category and language, using PolyLang
我正在创建一个插件,我已经可以使用 WordPress 的 get_posts() 函数按类别和当前语言获取帖子,并使用 pll_current_language() 传递属性 lang来自 PolyLang.
$args = array(
'posts_per_page' => 6,
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'lang' => pll_current_language()
);
return get_posts($args);
现在,我想知道如何按与语言相关的类别获取帖子?
例如,我有英语新闻类别和西班牙语新闻类别。如何自动设置?
像这样:
$args = array(
......
'category' => **current_category_for_this_language**
......
);
return get_posts($args);
有什么想法吗?
使用pll_get_term并按类别过滤。在这种情况下,“34”是我的术语 ID(通过悬停术语的编辑 link 获得)。
顺便说一句,据我所知 get_posts 默认情况下只获取当前页面语言的帖子,默认情况下它获取按日期 DESC 排序的帖子,所以我认为你可以从你的查询中省略那些。
$args = array(
'posts_per_page' => 6,
'category' => pll_get_term(34)
);
return get_posts($args);
来源
https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/
pll_get_term
Returns the category (or post tag) translation
Usage:
pll_get_term($term_id, $slug);
‘$term_id’ => (required) id of the term you want the translation
‘$slug’ => (optional) 2-letters code of the language, defaults to current language
https://codex.wordpress.org/Template_Tags/get_posts
Default Usage
<?php $args = array(
'posts_per_page' => 5,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => '',
'author_name' => '',
'post_status' => 'publish',
'suppress_filters' => true
);
$posts_array = get_posts( $args ); ?>
我正在创建一个插件,我已经可以使用 WordPress 的 get_posts() 函数按类别和当前语言获取帖子,并使用 pll_current_language() 传递属性 lang来自 PolyLang.
$args = array(
'posts_per_page' => 6,
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'lang' => pll_current_language()
);
return get_posts($args);
现在,我想知道如何按与语言相关的类别获取帖子? 例如,我有英语新闻类别和西班牙语新闻类别。如何自动设置?
像这样:
$args = array(
......
'category' => **current_category_for_this_language**
......
);
return get_posts($args);
有什么想法吗?
使用pll_get_term并按类别过滤。在这种情况下,“34”是我的术语 ID(通过悬停术语的编辑 link 获得)。
顺便说一句,据我所知 get_posts 默认情况下只获取当前页面语言的帖子,默认情况下它获取按日期 DESC 排序的帖子,所以我认为你可以从你的查询中省略那些。
$args = array(
'posts_per_page' => 6,
'category' => pll_get_term(34)
);
return get_posts($args);
来源
https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/
pll_get_term
Returns the category (or post tag) translation
Usage:
pll_get_term($term_id, $slug);
‘$term_id’ => (required) id of the term you want the translation
‘$slug’ => (optional) 2-letters code of the language, defaults to current language
https://codex.wordpress.org/Template_Tags/get_posts
Default Usage
<?php $args = array( 'posts_per_page' => 5, 'offset' => 0, 'category' => '', 'category_name' => '', 'orderby' => 'date', 'order' => 'DESC', 'include' => '', 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => 'post', 'post_mime_type' => '', 'post_parent' => '', 'author' => '', 'author_name' => '', 'post_status' => 'publish', 'suppress_filters' => true ); $posts_array = get_posts( $args ); ?>