2017-06-21 30 views
3

私はプラグインを作成していますが、WordPressのget_posts()関数とpll_current_language()でlang属性を渡してカテゴリと現在の言語で投稿を取得できました。 PolyLang。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); 

ここで、言語に関連するカテゴリで投稿を取得する方法を知りたいと思いますか? たとえば、英語のニュースカテゴリとスペイン語のNoticiasがあります。これを自動的に設定するにはどうしたらいいですか?このような

何か:

$args = array(
    ...... 
    'category' => **current_category_for_this_language** 
    ...... 
); 
return get_posts($args); 

任意のアイデア?

答えて

1

pll_get_termを使用し、カテゴリでフィルタリングします。この場合、「34」は私の用語IDです(用語の編集リンクをホバリングすることによって得られます)。

私の知る限り、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

は、カテゴリ(またはポストタグ)翻訳を返します

用途:

pll_get_term($term_id, $slug); 

あなたは言語の=>(オプション)2 - 文字コード変換

'$スラグ'、現在の言語

デフォルトをしたい用語の=>(必須)ID '$のterm_id'

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); ?> 
+0

これ以上説明できませんでした。ありがとう、ジョリス! –

関連する問題