Tengo ya 3 años desde que la mayoría de mis proyectos los he desarrollado enteramente en wordpress. Soy de los que piensan que WordPress es un entero CMS orientado a contenidos. He desarrollado directorios, sitios para empresa, fotologs, servicios de anuncios, y algunas otras mugres.
Tengo en mi poder algunos pedazos de código muy utiles al momento de desarrollar cosas en wordpress desde 0. En PHP se les conoce como funciones (para aquellos que no saben programar) y en los themes de WordPress van dentro del functions.php dentro de cada theme. Basta con definir tu función (en este caso copiar y pegar) y ejecutar el metodo como normalmente se hace en PHP <?php function(); ?>
Post populares
Como su nombre lo indica este método busca los Post más populares en la Base de Datos de WordPress de Acuerdo a el numero de comentarios. Colócalo al final de functions.php y ejecutado donde quieras en tu theme con . Trae parámetros por defecto pero en el código explico muy bien que hace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
/* Muestra los post mas comentados en X Tiempo en una lista. * Autor: Arturo Jamaica | Sitio: http://arturojamaica.com * * $no_post : Numero de Post a mostrar * $abre : Variable que guarda los tags de apertura (li, ol) * $cierra : Variable que guarda los tags de cierra (/li, /ol) * $anteriores_post : Es tu tarea ^ ^ * $tiempo_en_dias : Delimita el tiempo en dias para el resultado del Query */ /* Aqui definimos la funcion*/ function mas_comentados($no_posts = 3, $abre = '<li>', $cierra = '</li>', $anteriores_post = false, $tiempo_en_dias='15') { /* Objeto $wpdb: parte de la "MAGIA NEGRA" de wordpress. Siempre es global y permite la intereacción con la base de datos. Mas información http://codex.wordpress.org/Function_Reference/wpdb_Class */ global $wpdb; /*Queries a lanzar. Vamos armando el Query segun sea el caso*/ $request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments"; $request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish' AND post_type='post'"; /* La Talacha */ if(!$anteriores_post) $request .= " AND post_password =''"; if($tiempo_en_dias !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$tiempo_en_dias." DAY) < post_date "; } $request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts"; /*Lanzamos el Query que nos regresa los resultados en un objeto $post que es un "arreglo[]" con los post y sus parametros*/ $posts = $wpdb->get_results($request); $output = ''; $size = 'medium'; /*Un FOR para el trabajo con el objeto $post */ foreach ($posts as $post) { /* stripslashes: le quita los \ a los Strings (Asi vienen de la BD)*/ $post_title = stripslashes($post->post_title); /*======TIP: Aqui yo delimite el tamaño del Sring a 45 caracteres =======*/ $post_title = substr($post_title,0,45); /*Obtengo el numero de comentarios del post*/ $comment_count = $post->comment_count; $permalink = get_permalink($post->ID); /*===== Para el trabajo con las imagenes (no es lo óptimo)====*/ $attachment=''; if ($images = get_children(array( 'post_type' => 'attachment', 'numberposts' => 1, 'post_status' => null, 'post_parent' => $post->ID,))) foreach($images as $image) { $attachment = wp_get_attachment_image_src($image->ID, $size); $urlHome = get_bloginfo('template_directory'); } if($attachment==""){ $output .= $abre . '<h4><a href="' . $permalink . '" title="' . $post_title.'">'. $post_title.'</a></h4><div class="clear"></div>'. $cierra; }else{ $output .= $abre . '<a href="' . $permalink . '" title="' . $post_title.'"><img src="' . $attachment[0] .'" /></a><h4><a href="' . $permalink . '" title="' . $post_title.'">'. $post_title.'</a></h4><div class="clear"></div>'. $cierra; } } echo $output; /* Fin de La Talacha */ } |
Mi_imagen para Thumbnails
Este es uno de mis Scripts Premium. Si alguna vez haz buscado un plug in que te maneje thumbnails notaras que no hay nada bueno. Este método busca la última imagen subida desde el panel de wordpress (no requiere custom fields). Regresa el thumb en distintos tamaños ya de acuerdo a los parámetros. El manejador de contenido multimedia de wordpress es increíble y permite relacionar muy bien post con sus imagenes. Para ejecutarlo colócalo en functions.php y ejecuta (cambia TAMAÑO y ID DE TU POST porlo deseado).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
/* Trae una imagen dado un ID * Autor: metacortex Modificado por: Arturo Jamaica | Sitio: http://arturojamaica.com * * $id: El id del Post * $tamano = El tamaño de la imagen puede ser mini, mediana o grande */ function mi_imagen_id($tamano = '',$id) { if ( $images = get_children( array ( 'post_parent' => $id, 'post_type' => 'attachment', 'numberposts' => 1, 'post_mime_type' => 'image' ))); { if(!empty($images)) { foreach( $images as $image ) { if($tamano == 'mini') { $imagen = wp_get_attachment_image( $image->ID, 'thumbnail' ); } if($tamano == 'medio') { $imagen = wp_get_attachment_image( $image->ID, 'medium' ); } if($tamano == 'grande') { $imagen = wp_get_attachment_image( $image->ID, 'full' ); } echo $imagen; } } } } |
Loop en donde sea
Otro de mis Métodos favoritos. Me permite invocar loops con mis parámetros donde quiera. Junto con mi_imagen son la pareja perfecta. Como siempre se coloca en funtions.php y se ejecuta con
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php /* Regresa una div con X numero de post de X categoria para ponerlo en cualquier lugar * Autor: Arturo Jamaica | Sitio: http://arturojamaica.com * * $categoria: ID de la categoria que quieres filtrar * $numero_de_post : El numero de post a regresar * $inicio : el tag de inicio es un div con classe loop por default * $cierre : el tag de cierre es opuesto a inicio */ function loop($categoria=1,$numero_de_post=3,$inicio='<div class="loop">',$cierre='</div>'){ $lastposts = get_posts('category='.$categoria.'&numberposts='.$numero_de_post); $out=$inicio; foreach($lastposts as $post) : setup_postdata($post); $out.='<div class="post" id="">'; $out.='<h3><a href="<?php the_permalink() ?>">'.the_title().'</a></h3>'; $out.='<p>'.the_content().'</p>'; $out.='</div>'; endforeach; $out.=$cierre; return $out; }?> |
Loop por fechas
Este código no es mio pero es igual de útil. Selecciona 2 rangos de fechas y te trae la lista de estos
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php function filter_where($where = '') { $where .= " AND post_date >= '2009-03-17' AND post_date <= '2009-05-03'"; return $where; } add_filter('posts_where', 'filter_where'); query_posts($query_string); while (have_posts()) : the_post(); the_content(); endwhile; ?> |
Bonus : Botón para enviar Facebook
Copialo no en el functions.php. Sino directo en el loop o en un single.php
1 |
<a href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php the_title(); ?>" target="blank">Compartir en Facebook</a> |
Soy un profundo enamorado de este CMS.









