使用PolyLang按类别和语言获取帖子

Ita*_*ges 4 php wordpress plugins polylang

我正在创建一个插件,我已经可以使用WordPress中的get_posts()函数按类别和当前语言来获取帖子,并通过PolyLang中的pll_current_language()传递属性lang。

$args = array(
    'posts_per_page'   => 6,
    'orderby'          => 'date',
    'order'            => 'DESC',
    'post_type'        => 'post',
    'post_status'      => 'publish',
    'lang'             => pll_current_language()
);
return get_posts($args);
Run Code Online (Sandbox Code Playgroud)

现在,我想知道如何按与语言相关的类别获取帖子?例如,我的新闻类别为英语,Noticias为西班牙语。如何自动设置?

像这样:

$args = array(
    ......
    'category' => **current_category_for_this_language**
    ......
);
return get_posts($args);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jor*_*oos 6

使用pll_get_term并按类别过滤。在这种情况下,“ 34”是我的学期ID(将鼠标悬停在该学期的编辑链接上即可得到)。

顺便说一下,据我所知,get_posts默认仅获取当前页面语言中的帖子,并且默认获取按日期DESC排序的帖子,因此您可以忽略我认为的查询。

$args = array(
  'posts_per_page'   => 6,
  'category'         => pll_get_term(34)
);
return get_posts($args);
Run Code Online (Sandbox Code Playgroud)

资料来源

https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/

pll_get_term

返回类别(或帖子标记)翻译

用法:

pll_get_term($term_id, $slug);
Run Code Online (Sandbox Code Playgroud)

'$ term_id'=>(必填)您要翻译的字词的ID

'$ slug'=>(可选)该语言的2字母代码,默认为当前语言

https://codex.wordpress.org/Template_Tags/get_posts

默认用法

<?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 ); ?>
Run Code Online (Sandbox Code Playgroud)

  • 没有更好的解释!非常感谢Joris! (2认同)