{"id":912,"date":"2022-02-16T12:07:00","date_gmt":"2022-02-16T12:07:00","guid":{"rendered":"https:\/\/hugocalixto.es\/?p=912"},"modified":"2022-02-16T12:07:00","modified_gmt":"2022-02-16T12:07:00","slug":"mostrar-entradas-mas-vistas","status":"publish","type":"post","link":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/blog\/mostrar-entradas-mas-vistas\/","title":{"rendered":"C\u00f3mo mostrar las entradas m\u00e1s vistas en WordPress"},"content":{"rendered":"\n<p>Probablemente, en alguna ocasi\u00f3n te has encontrado con la necesidad de mostrar una lista de las entradas m\u00e1s vistas o m\u00e1s populares de tu web. Es muy normal querer destacar las informaciones m\u00e1s relevantes o las que m\u00e1s tr\u00e1fico tienen en nuestra web.<\/p>\n\n\n\n<p>Pues bien, por defecto, WordPress no tiene ning\u00fan mecanismo para almacenar o recuperar la informaci\u00f3n de sus entradas m\u00e1s relevantes. Como casi siempre, hay un plugin (o varios) que hace esto.<\/p>\n\n\n\n<p>Siempre que buscas un plugin y encuentras 5 o 6 que te pueden ayudar, acabas haci\u00e9ndote las mismas preguntas y los mismos pensamientos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u00bfCu\u00e1l es el mejor?<\/li><li>\u00bfCu\u00e1l es el que tarda m\u00e1s en actualizarse? \u00bfSon seguros?<\/li><li>\u00bfQu\u00e9 opciones tiene uno que no tiene el otro y viceversa?<\/li><li>Algunos tienen 1000 opciones, de las cuales no entiendo o no s\u00e9 cu\u00e1les son 900.<\/li><li>\u00bfInfluir\u00e1 esto en el rendimiento de mi sitio?<\/li><li>\u00bfPodr\u00e9 adaptarlo a mi dise\u00f1o y a lo que espero seg\u00fan mis necesidades?<\/li><\/ul>\n\n\n\n<p>No te preocupes, porque en este caso, son s\u00f3lo unas pocas l\u00edneas de c\u00f3digo y, ser\u00e1 sin un plugin, por lo que tendr\u00e1s el 100% del control de lo que quieres hacer, veamos c\u00f3mo conseguir esta funcionalidad sin necesidad de instalar plugins.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-construir-nuestra-propia-funcionalidad-para-obtener-los-posts-m-s-vistos-o-m-s-populares-sin-plugins\">Construir nuestra propia funcionalidad para obtener los posts m\u00e1s vistos o m\u00e1s populares sin plugins<\/h2>\n\n\n\n<p>S\u00f3lo tiene que a\u00f1adir estas 2 funciones a su functions.php, y luego voy a explicar lo que hace cada uno:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function set_post_views() {\nif (is_single()) {\n$post_ID = get_the_ID();\n$count = get_post_meta( $post_ID, 'post_views', true );\n\nif ( $count == '' ) {\ndelete_post_meta( $post_ID, 'post_views' );\nadd_post_meta( $post_ID, 'post_views', 1 );\n} else {\nupdate_post_meta( $post_ID, 'post_views', ++$count );\n}\n}\n}\nadd_action( 'wp', 'set_post_views' );\n\n\/\/ Funci\u00f3n para obtener el n\u00famero de vistas de un post\nfunction get_post_views($post_ID){\n$count = get_post_meta($post_ID, 'post_views', true);\n\nif ($count == ''){\ndelete_post_meta($post_ID, 'post_views');\nadd_post_meta($post_ID, 'post_views', 0);\nreturn 0;\n}\nreturn $count;\n}<\/code><\/pre>\n\n\n\n<p>En primer lugar, tenemos la funci\u00f3n set_post_views () que utilizaremos para contar las visitas a nuestras entradas. La forma de hacerlo es a\u00f1adiendo esta funci\u00f3n a la torre wp. En ese momento, podemos preguntarnos si estamos en un puesto \u00fanico o en un detalle de un puesto. En ese caso, obtenemos el ID y consultamos las vistas que tiene nuestra entrada a trav\u00e9s de un campo personalizado que llamamos post_views. Si est\u00e1 vac\u00edo (la primera vez que visitamos un post), lo ponemos a \u00ab1\u00bb. En el caso de que tenga un valor, basta con a\u00f1adir otro 1 al valor (++ $ count). Con esta funci\u00f3n, contaremos cada vez que alguien vea un post.<\/p>\n\n\n\n<p>La segunda funci\u00f3n get_post_views() se utilizar\u00e1 para mostrar el n\u00famero de vistas de nuestro post. Como tenemos el control absoluto, podemos llamar a estos datos en una lista de posts y poner el n\u00famero de vistas en una etiqueta o insignia, o simplemente poner un texto tipo: Este post fue visto N veces. Por ejemplo, en el bucle single.php, podr\u00edamos poner algo as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/* Start the Loop *\/\nwhile ( have_posts() ) : the_post();\n$post_views = get_post_views(get_the_ID());?&gt;\n\n&lt;p&gt;Este post fue visto &lt;?php echo sprintf( _n( '%s vez', '%s vezes', $post_views, 'your_textdomain' ), $post_views );?&gt;&lt;\/p&gt;\n\n&lt;?php\nendwhile;\n\/* End of the loop.*\/?&gt;<\/code><\/pre>\n\n\n\n<p>Ahora, si queremos mostrar una lista de los posts m\u00e1s vistos o populares, por ejemplo, en la barra lateral del sitio, tendremos que hacer una consulta como \u00e9sta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n$args = array(\n'posts_per_page' =&gt; 4,\n'meta_key' =&gt; 'post_views',\n'orderby' =&gt; 'meta_value_num',\n'order' =&gt; 'DESC'\n);\n\n$popular_posts = new WP_Query( $args );\nwhile ( $popular_posts-&gt;have_posts() ) : $popular_posts-&gt;the_post();?&gt;\n\n&lt;h2&gt;&lt;?php the_title();?&gt;&lt;\/h2&gt;\n&lt;?php the_excerpt();\n\nendwhile;\n?&gt;<\/code><\/pre>\n\n\n\n<p>Esta consulta devolver\u00e1 las 4 entradas m\u00e1s visitas. El dise\u00f1o o la forma en que desea mostrarlo en su <a href=\"https:\/\/hugocalixto.es\/servicio\/desarrollo-web-con-wordpress\/\">plantilla<\/a>, lo dejo a su imaginaci\u00f3n.<\/p>\n\n\n\n<p>A\u00f1adir esta informaci\u00f3n a wp-admin<br>Ahora, a\u00f1adiremos la informaci\u00f3n de los posts m\u00e1s vistos o m\u00e1s populares a la lista de posts en wp-admin. Lo hacemos a\u00f1adiendo a functions.php las funciones posts_column_views () y posts_custom_column_views ():<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ A\u00f1adir columna a la lista de todos los posts de wp-admin\nfunction posts_column_views($defaults){\n$defaults&#091;'post_views'] = __('Visualiza\u00e7\u00f5es', 'your_textdomain');\nreturn $defaults;\n}\nadd_filter('manage_posts_columns', 'posts_column_views');\n\nfunction posts_custom_column_views($nombre_columna, $id){\nif ($nombre_columna === 'vistas_post'){\necho get_post_views(get_the_ID());\n}\n}\nadd_action('manage_posts_custom_column', 'posts_custom_column_views', 5, 2);\n<\/code><\/pre>\n\n\n\n<p>Lo que hacen estas funciones es a\u00f1adir otra columna a la lista de todas las entradas con el n\u00famero de vistas de cada una de ellas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 m\u00e1s puedes hacer?<\/h2>\n\n\n\n<p>Como he dicho antes, al hacerlo manualmente (sin un plugin), tienes un control total sobre lo que quieres como resultado, c\u00f3mo lo quieres, c\u00f3mo lo vas a mostrar y d\u00f3nde lo vas a mostrar.<\/p>\n\n\n\n<p>Dejo que su imaginaci\u00f3n fluya, si desea tener un control m\u00e1s exhaustivo, por ejemplo:<\/p>\n\n\n\n<p>Si lo que su puesto fue visitado por un bot;<br>Si se quiere controlar por pa\u00eds;<br>Si quieres contar o no los usuarios y\/o visitantes que han visto el post;<br>Si quieres controlar si un mismo usuario visita un post varias veces o no;<br>etc.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Probablemente, en alguna ocasi\u00f3n te has encontrado con la necesidad de mostrar una lista de las entradas m\u00e1s vistas o m\u00e1s populares de tu web. Es muy normal querer destacar las informaciones m\u00e1s relevantes o las que m\u00e1s tr\u00e1fico tienen en nuestra web. Pues bien, por defecto, WordPress no tiene ning\u00fan mecanismo para almacenar o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":914,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[],"class_list":["post-912","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articulos"],"_links":{"self":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/posts\/912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/comments?post=912"}],"version-history":[{"count":0,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/posts\/912\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/media\/914"}],"wp:attachment":[{"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/media?parent=912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/categories?post=912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hugocalixto.com\/demos\/huuguu-lite\/wp-json\/wp\/v2\/tags?post=912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}