ページネーションでタグの URL を取得しようとしています。これは完全なコードです。wp-graphql 関数を拡張しようとしています。このようにして、タグのページ付けされたタグの URL を取得できます。私は30k以上のタグを持っています。ページ分割されたカテゴリ、投稿、作成者の URL を正常に取得できましたが、これget_tags()
が wp-graphql で想定どおりに機能しない理由がわかりません。
//Get all tag urls for sitemap
add_action('graphql_register_types', function () {
register_graphql_field('RootQuery', 'getTagUrls', [
'type' => ['list_of' => 'String'],
'args' => [
'pageNo' => [
'type' => 'int',
],
'perPage' => [
'type' => 'int',
],
],
'description' => __('This function returns tag urls, It takes pageNo and PerPage as optional args.'),
'resolve' => function ($source, $args, $context, $info) {
$tagUrls = array();
$paged = (isset($args['pageNo'])) ? ($args['pageNo']) : 1;
$perPage = (isset($args['perPage'])) ? ($args['perPage']) : 10;
$offset = ($paged - 1) * $perPage;
$number = $perPage + $offset;
$tags = get_tags(array(
'orderby' => 'name',
'order' => 'ASC',
'number' => $number,
'offset' => $offset,
));
foreach ($tags as $tag) {
$fullUrl = esc_url(get_category_link($tag->term_id));
$url = str_replace(home_url(), '', $fullUrl);
array_push($tagUrls, $url);
}
return array_merge($tagUrls);
},
]);
});