Queries, variables y códigos útiles para WordPress

Hace ya unos días, Mn4K, que ayuda a moderar el foro y siempre tiene alguna respuesta de calidad para los usuarios que lo pidan, elaboró una maravilla de hilo en el que aglutinaba una serie de queries, variables y códigos útiles para WordPress, muy interesantes en multitud de ocasiones.

biblia-wordpress-neon

Ciertamente la recopilación que hizo merecería estar en la Biblia de WordPress, pero entretanto merece un puesto de honor en Ayuda WordPress, y aquí lo tenemos para disfrutarlo, para que lo agreguéis a vuestros favoritos y lo uséis para mejorar vuestro blog.

Aquí tienes esta maravilla de recopilación …

“Quiero mostrar sólo los post de la tal o cuál categoría”

Para eso, tenés que hacer una custom query justo antes del Loop, así:

Agregando: <?php query_posts(“cat=1”); ?>, sobre el infame loop.

“Pero, ¿qué es el numerito ese?, yo a mís categorías les pongo nombre.”

Bien, también se puede hacer una query por nombre de categoría, sino te copa la onda ID.

<?php query_posts('category_name=nombredelacat') ?>

“Aha, que lindo. Pero en realidad, lo que yo quiero es mostrar todos los posts en la página principal, pero sólo los posts de la categoría A en la página A.”

Bueno, eso lo hacés con plantillas de página.

“¿Y, eso?”

Bueno, como ya saben, WordPress trabaja con páginas.Lo que puedes hacer para que se muestren sólo los posts de la categoría “A” en la página “Categoría A”, es asignar a esta página un plantilla que tenga el código del index.php, con la llamada a los posts, pero con una query como las de arriba para que sólo se vea tal o cual categoría.
Para crear una plantilla de página tienes que crear un archivo.php, con un comentario arriba del todo. Supongamos que queremos crear la pagina “Categoría A”, abrimos nuestro editor de texto/código de confianza, y escribimos:

Luego, debajo, pegamos el código de index.php, igual, o con alguna modificación a gusto. Luego, le agregamos arriba del loop, la query a la categoría:

<?php query_posts('category_name=nombredelacat') ?>

y lo guardamos, como, por ejemplo, categoria-a.php. Después, lo subimos a la carpeta de nuestro theme “public_html/wp-content/themes/tu-theme/

Una vez hecho esto, nos metemos en la administración, y le damos a “Agregar Página/Add page“. Agregamos nuestra Página “Categoría A”, y en la sección “atributos” que en WP 2.7 esta a la izquierda, debajo de “Publicar“, selecionamos nuestra plantilla de página del menu desplegable.

Y listo, tenemos una página especial que publica sólo los posts de una categoría.

Como se imaginarán, este método se puede usar para cualquier código especial que queramos en una página, sólo los post de tal categoría, tal autor, sólo los posts de una edad determinada, una página sin sidebar, una página con header o footer especial, lo que sea.

“Quiero sólo los posts de tal o cual author”

<?php query_posts("author=1"); ?>

o, por el nombre:

<?php query_posts("author_name=Nombre"); ?>

“Quiero un header diferente para páginas diferentes.”

Eso lo podés hacer con algunos bellos, bellos condicionales:

Así, si es la página llamada “contacto” se va a cargar el header especial para contacto, que puede tener una diferente imagen, un diferente código, etc, etc.

También, otra opción es crear, como arriba, un template especial para cada página. Además, este método también es bueno para utilizar en lugar de la plantilla de página para ver posts en cierta categoría.

Además, este mismo código se puede usar para categorías usando is_category en lugar de is_page.

“Quiero mostrar sólo los posts de hoy”

<?php
$latest = $wpdb->get_var(“SELECT post_date FROM $wpdb->posts WHERE post_status = ‘publish’ ORDER BY post_date DESC LIMIT 1″);
$latest = str_replace(‘-‘, ”, substr($latest, 0, 10));
// echo $latest;
query_posts(‘m=’ . $latest . ‘&showposts=-1’);
$wp_query->is_archive = false; $wp_query->is_home = true;
?>

Esto debería traer los posts del ultimo día donde hubo uno o más posts. Así no te quedas con un blog en blanco si a las 12:00 no posteas nada.

O, también, si, por ejemplo, tenés un blog de fiestas y queres una sección: “Fiestas Hoy”, podés usar algo así:

<?php $dia = date(‘d’); ?>
<?php query_posts(“cat=1&day=$hoy&order=ASC”); ?>

Este código te traerá sólo los posts de hoy, y le podemos agregar un código si no hay nada:

“Quiero que mi primer post se vea diferente”

Esto es poco php, y más magia de estilos.

En general, y esto depende de tu theme, seguramente tenés un <div> para los posts, algo como:

<div class=”post”>…</div> o <div class=”content”>…</div>, etc.

Lo que hay que hacer es que al primer post se le aplique un estilo diferente, como:

<div class=”post primero”>…</div>
que definirás en tu .css escribiéndole un hermoso estilo:

.firstpost{
laspropiedadesquemástegusten;
}

Recordamos el Loop, ¿no?:

Arriba, le ponemos algo así:

<?php $claseprimero = 'primero'; ?>

o sea, definimos la var $claseprimero como ‘primero’. Despues, buscamos el <div> que se aplica a nuestros posts, supongamos:

<div class=”post”>

y lo cambiamos a <div class="post <?php echo $claseprimero; ?>">

entonces, quedará como <div class=”post primero”>

y luego, justo debajo, agregamos

<?php $claseprimero = ""; ?>

Entonces, para el primer post, $claseprimero devuelve ‘primero’, pero para los demas, está vació, entonces quedan con el div cómun, sin ningún agregado.

Otra opcción será implementar un doble loop, con un loop especial para el primer post, pero esta opción es menos texto. 😛

“Quiero colores alternados en mis posts, comentarios, etc.”

Bien. De nuevo, arriba de nuestro amigo el Loop, vamos a definir una variablecita:

<?php $par_o_impar = ‘impar’; ?>

Luego, buscamos el div aplicado a nuestros posts (o comentarios), y lo cambiamos por:

<div class="post <?php echo $par_o_impar; ?>">

y una vez convertido a html por tu servidor, queda como:

<div class=”post impar”>

Justo debajo, le agregamos:

<?php $par_o_impar = ('impar'==$par_o_impart) ? 'par' : 'impar'; ?>

Así, para el primer post o comentario la clase es ‘post impar’, y para los demás, va cambiando. Después, lo único que hay que haces es definir las clases .par e .impar para que sean diferentes.

por ejemplo:

.par {
background: #fff;

.impar {
background: #000;
}

“Quiero mostrar el contenido/autor/fecha/hora/comentarios de mis posts”, o, alternativamente “No quiero mostrar el contenido/autor/fecha/hora/comentarios de mis posts”

Estas no son queries, sino funciones de WordPress, pero a veces pasa que queremos agregar un dato a nuestro “Archivo”, o sacarlo de nuestro index, así que paso las funciones para llamar a:

el contenido:

<?php the_content(); ?>

el título:

el author:

<?php the_author; ?>

la fecha:

<?php the_time('F jS, Y'); ?>

los comentarios:

<?php comments_popup_link('Sin comentarios »', '1 Comentario »', '% Comentarios »'); ?>

las categorías (dividas con cóma):

<?php the_category(', '); ?>

las tags (divididas con coma):

<?php the_tags(’Tags: ‘, ‘, ‘, ‘<br />’); ?>

el extracto:

<?php the_excerpt(); ?>

el header:

<?php get_header(); ?>

el sidebar:

<?php get_sidebar(); ?>

el footer:

<?php get_footer(); ?>

La navegación:

Seguro me olvido de unos cuantos, pero la idea está, en general, son muy claros los muchachos de WP.

“Quiero mostrar en mis archivos el extracto si hay muchos posts, o el post completo si hay pocos.”

Hay que decirle a wordpress que cuente. En este ejemplo, se ve el extracto si hay más de dos posts, pero eso lo podes cambiar a tu gusto.

“Quiero posts aleatorios”

Las queries de wp son lo mejor que hay, no? De nuevo, arriba del sufrido loop:

<?php query_posts('orderby=rand') ?>

“Quiero agregar un custom field “A” a mis posts, y que se muestre o se use como vinculo del título o baile tap, etc.”

Bueno, lo de bailar tap te lo debo, a menos que tu custom field sea para un .gif bailador de tap.

Primero, lo que tenemos que hacer es asignar una key y un valor a nuestro custom field. Supongamos, por ejemplo, que tenemos un blog sobre arquitectura.
Queremos que todos nuestros posts incluyan la informacion:

Arquitecto: Nombre del Arquitecto.

Y claro, esto lo podemos escribir. Pero tambien queremos que esto sea un Heading 3, que este justo debajo del título, y que sea un vínculo a nuestra página “Arquitectos”, donde detallamos los sitios personales de los arquitectos tratados.

Bueno, esto (o alguna variación a este ejemplo, como el uso que hacen muchas plantillas de los campos personalizados para thumbnails) es mucho menos tedioso con los amables Custom Fields

Lo primero que hacemos, es ir a Escribir Post y buscamos, debajo del todo, la casilla de “Agregar Campo Personalizado“.

Ahí, agregamos un campo de nombre “Arquitecto” y de valor “Nombre del Arquitecto.” Le damos a “Agregar campo Personalizado” y listo, el campo ya anda por ahí, en la base de datos.

Ahora, lo que necesitamos hacer es que nuestra plantilla use ese campo personalizado. En el ejemplo, asumo que lo queremos mostrar en la página principal, pero lo mismo vale para los archivos, para el post sólo, etc.

Abrimos nuestro archivo index.php. Como queremos mostrar el nombre del Arquitecto debajo del título, entonces buscamos la etiqueta

<?php the_title(); ?>

Justo debajo, agregamos:

<?php $key="Arquitecto"; echo get_post_meta($post->ID, $key, true); ?>

Pero también, queriamos que el nombre del arquitecto fuera un Heading 3. Entonces, cambiamos por:

<h3><?php $key="thumbnail"; echo get_post_meta($post->ID, $key, true); ?></h3>

Y, también queríamos que el nombre del arquitecto fuera un link a nuestra página “Arquitectos”, entonces, lo cambiamos por:

<h3><a href="http://arquitectura-blog.com/arquitectos/" title="Arquitectos" rel="nofollow"><?php $key="Arquitecto"; echo get_post_meta($post->ID, $key, true); ?></a></h3>

Y presto, custom field en nuestra página de inicio.

En fin, eso es todo lo que se me ocurre ahora, espero contribuciones y correcciones. Saludos, y Happy Blogging!.

AVISO: esta publicación es de hace dos años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

Valora este artículo para mejorar la calidad del blog ...

Al hacer una valoración se recoge una cookie con la IP de tu dispositivo

FlojitoNo está malEstá bienMe ha servidoFantástico (6 votos, promedio: 4,67 de 5)
Cargando…

Autor: Fernando Tellado

Fernando Tellado, apasionado de WordPress, profesor, consultor y ponente. Maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaíno de nacimiento, Español de corazón y ciudadano de donde me quieran. Autor del libro WordPress - La tela de la araña. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera.

Comparte esta entrada en
468 ad

Pin It on Pinterest

Share This