popular posts
title: "Popular Posts" wordpressUri: "/recipes/popular-posts/" wordpressId: "2329" group: "Custom Post Types" summary: "The following code allows you to query for popular posts. It’s still up to you to determine the best way to store popular posts, but this example assumes a meta_key is involved. Beware though, meta queries can be expensi…"
The following code allows you to query for popular posts. It’s still up to you to determine the best way to store popular posts, but this example assumes a meta_key is involved. Beware though, meta queries can be expensive!
add_action( 'graphql_register_types', function() {
// This registers a connection to the Schema at the root of the Graph
// The connection field name is "popularPosts"
register_graphql_connection( [
'fromType' => 'RootQuery',
'toType' => 'Post',
'fromFieldName' => 'popularPosts', // This is the field name that will be exposed in the Schema to query this connection by
'connectionTypeName' => 'RootQueryToPopularPostsConnection',
'connectionArgs' => \WPGraphQL\Connection\PostObjects::get_connection_args(), // This adds Post connection args to the connection
'resolve' => function( $root, $args, \WPGraphQL\AppContext $context, $info ) {
$resolver = new \WPGraphQL\Data\Connection\PostObjectConnectionResolver( $root, $args, $context, $info );
// Note, these args will override anything the user passes in as { where: { ... } } args in the GraphQL Query
$resolver->set_query_arg( 'meta_key', 'wpb_post_views_count' );
$resolver->set_query_arg( 'orderby', 'meta_value_num' );
$resolver->set_query_arg( 'order', 'DESC' );
return $resolver->get_connection();
}
] );
// This registers a field to the "Post" type so we can query the "viewCount" and see the value of which posts have the most views
register_graphql_field( 'Post', 'viewCount', [
'type' => 'Int',
'resolve' => function( $post ) {
return get_post_meta( $post->databaseId, 'wpb_post_views_count', true );
}
] );
} );
You can query for the popular posts using this GraphQL query:
{
popularPosts(first: 10, where: {dateQuery: {after: {year: 2021, month: 10}}}) {
nodes {
id
title
date
viewCount
}
}
}

这篇文档对你有帮助吗?
谢谢你的反馈!