{"id":1250,"date":"2019-06-29T11:37:07","date_gmt":"2019-06-29T14:37:07","guid":{"rendered":"https:\/\/felipeelia.com.br\/?p=1250"},"modified":"2022-08-27T19:05:08","modified_gmt":"2022-08-27T22:05:08","slug":"ordem-aleatoria-order-by-rand-na-lista-de-posts-da-api-rest","status":"publish","type":"post","link":"https:\/\/felipeelia.com.br\/ordem-aleatoria-order-by-rand-na-lista-de-posts-da-api-rest\/","title":{"rendered":"Ordem aleat\u00f3ria (order by rand) na lista de posts da API REST"},"content":{"rendered":"\n
H\u00e1 algum tempo, depois de anunciar a chegada do primeiro beta do WordPress 5.1 no grupo WordPress Brasil no Facebook, um usu\u00e1rio perguntou quando viria a op\u00e7\u00e3o de ordenar aleatoriamente os posts na API REST do WordPress<\/a>. Expliquei que n\u00e3o era preciso ter isso no core<\/em> e criei um c\u00f3digo para habilitar esta funcionalidade.<\/p>\n\n\n\n O c\u00f3digo abaixo usa o filtro<\/a> Para usar basta chamar \u00c9 s\u00f3 salvar o c\u00f3digo como um arquivo php e colocar o arquivo na pasta plugins. O c\u00f3digo tamb\u00e9m est\u00e1 dispon\u00edvel no gist<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":" Um plugin simples para habilitar a ordena\u00e7\u00e3o aleat\u00f3ria dos posts na API REST do WordPress.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[30],"tags":[104],"yoast_head":"\nrest_{$this->post_type}_collection_params<\/code> para incluir
rand<\/code> como uma entrada no array que enumera os valores poss\u00edveis para a ordena\u00e7\u00e3o. Este filtro \u00e9 usado no final do m\u00e9todo
get_collection_params<\/code> da classe
WP_REST_Posts_Controller<\/code>, como voc\u00ea pode ver aqui<\/a>. A parte
{$this->post_type}<\/code> do filtro \u00e9 vari\u00e1vel e no c\u00f3digo eu uso para alterar a lista de posts.<\/p>\n\n\n\n
\/wp-json\/wp\/v2\/posts?orderby=rand<\/code>. Se voc\u00ea estiver usando alguma solu\u00e7\u00e3o para cache, o funcionamento pode ser afetado.<\/p>\n\n\n\n
<?php\n\/**\n * Plugin Name: REST API - Post list randomize\n * Description: Randomize the content list in REST API passing `orderby=rand` as parameter.\n * Version: 1.0.0\n * Author: Felipe Elia | Codeable\n * Author URI: https:\/\/codeable.io\/developers\/felipe-elia?ref=qGTOJ\n *\/\n\n\/**\n * Add `rand` as an option for orderby param in REST API.\n * Hook to `rest_{$this->post_type}_collection_params` filter.\n *\n * @param array $query_params Accepted parameters.\n * @return array\n *\/\nfunction add_rand_orderby_rest_post_collection_params( $query_params ) {\n\t$query_params['orderby']['enum'][] = 'rand';\n\treturn $query_params;\n}\nadd_filter( 'rest_post_collection_params', 'add_rand_orderby_rest_post_collection_params' );<\/code><\/pre>\n\n\n\n