SummArg | Cursos y recursos para webmasters

Clase 19: Plugins y snippets recomendados

Compartimos con ustedes todos los plugins y snippets que consideramos que todo desarrollador debe tener para sacar el máximo provecho de la plataforma. Estos son los básicos para la construcción de cualquier sitio WordPress aunque obviamente no son todos indispensables, sino que ayudan con diversas tareas.

Plugins

  • Askimet: Incluido en WordPress, su  misión es combatir el spam en todo el mundo, totalmente gratuito.
  • Google XML Sitemap: Generador automático de sitemaps.
  • All in One WP Security: Medidas básicas de seguridad para tu WP.
  • Contact Form 7: El mejor plugin para formularios, permite el envío de archivos y mucho mas.
  • Efficient Related Posts: Entradas relacionadas, optimizado en vistas de cuidar el consumo de recursos.
  • Regenerate Thumbnails: Plugin obligatorio para los desarrolladores de themes, regenera las miniaturas en base a los tamaños que encuentra en el functions.php.
  • Resize at upload plus: Permite establecer el tamaño máximo de las imágenes (en ancho y alto), y cuando el mismo es superior redimensiona la imagen.
  • WP-Pagenavi: Inserta paginación con números.
  • WP SyntaxHighlighter: Permite insertar código en las entradas y mostrarlo con colores según el lenguaje.
  • WP to Twitter: Envía a Twitter cada artículo al ser publicado.
  • Lightbox Gallery: Añade el efecto lightbox a tus galerías nativas de WordPress.
  • Simple Lightbox: Efecto lightbox a tus imágenes, permite configurar animaciones e incluso un modo slideshow.
  • WP Lightbox 2: Inserta el efecto lightbox a imágenes individuales o a galerías.
  • AWPCP: Another WordPress Classifieds Plugin, completísimo plugin para insertar clasificados en nuestro sitio. Dispone de varios addons premium.
  • Cart66 Lite: Plugin de e-commerce, permite vender productos digitales, genera programas de afiliado, ultra liviano.
  • E-Shop: Potente plugin de e-commerce con varias opciones de listado de producto, cargos por flete, varias pasarelas de pago.
  • Jigoshop: Este es un plugin muy extendido, que cuenta con varios addons premium (ver categoría Jigoshop en Codecanyon), cuenta con la posibilidad de setear diferentes parámetros por producto (ej. talles de ropa, colores, etc). Muy completo.
  • Woocommerce: Uno de los plugins mas poderosos, ya que cuenta con una amplia variedad de addons tanto en el sitio de sus desarrolladores como en Codecanyon.
  • WP-e-commerce: Este es uno de los plugins mas antiguos que todavía sobrevive y se adapta muy bien. Tiene una alta compatibilidad con casi cualquier theme y además cuenta con sus propios addons premium.
  • Simple Advert: Completo gestor de banners que se integra con WordPress pero también funciona en cualquier plataforma. Funciones de publicación por tiempo, clicks o impresiones. Sistema de estadísticas. Soporta enlaces, imágenes o flash.
  • W3 Total Cache: Uno de los plugins de cache mas completos, acelera la carga de página y economiza recursos del servidor.
  • WP Mobile Edition: Detecta automáticamente a los usuarios que ingresan desde un dispositivo móvil y carga un theme optimizado para dicha resolución.
  • Any Mobile Theme Switcher: Igual al anterior pero dispone de mayor control permitiendo cargar un theme por cada tipo de dispositivo móvil encontrado.
  • WPTouch Mobile Plugin: El plugin para visualizar desde dispositivos móviles mas popular del mercado.
  • WordPress Mobile Pack: El mas completo plugin para desarrolladores, incluye varias adaptaciones para determinados dispositivos, un theme default, un theme para el escritorio de WordPress y mas.

Snippets

Añadir custom post types a los feeds.

function myfeed_request($qv) {
	if (isset($qv['feed']))
		$qv['post_type'] = get_post_types();
	return $qv;
}

 

Cambiar la longitud de the_excerpt

function my_excerpt($length) {
return 150;
}
add_filter('excerpt_length', 'my_excerpt');

 

Cambiar el texto de “leer mas” del excerpt

<?php
	function new_excerpt_more($more) {
		return '[much more to go]';
	}
	add_filter('excerpt_more', 'new_excerpt_more');
?>

 

Colocar imagen destacada automáticamente

function autoset_featured() {
          global $post;
          $already_has_thumb = has_post_thumbnail($post->ID);
              if (!$already_has_thumb)  {
              $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
                          if ($attached_image) {
                                foreach ($attached_image as $attachment_id => $attachment) {
                                set_post_thumbnail($post->ID, $attachment_id);
                                }
                           }
                        }
      }  //end function
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');

 

Función para colocar una cantidad personalizada de texto

/*
Original Plugin URI: http://labitacora.net/comunBlog/limit-post.phps
Usage: the_content_limit($max_charaters, $more_link)
*/
function the_content_limit($max_char, $more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
    $content = get_the_content($more_link_text, $stripteaser, $more_file);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);
    $content = strip_tags($content);
   if (strlen($_GET['p']) > 0) {
		echo "<p>";
		echo $content;
        echo "[...]</p>";
   }
   else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {
        $content = substr($content, 0, $espacio);
        $content = $content;
        echo "<p>";
        echo $content;
        echo "[...]</p>";
   }
   else {
		echo "<p>";
		echo $content;
        echo "[...]</p>";
   }
}

Luego dentro del bucle se coloca:

the_content_limit(150);

 

Añadir texto al final de nuestras entradas en los feeds

function feedFilter($query) {
    if ($query->is_feed) {
        add_filter('the_content','feedContentFilter');
    }
    return $query;
}
add_filter('pre_get_posts','feedFilter');
function feedContentFilter($content) {
    $content .= '<p>Texto extra para los feeds... </p>';
    return $content;
}

 

Añadir iconos según el myme type del adjunto

function get_attachment_icons($echo = false){
	$sAttachmentString = "<div class='documentIconsWrapper'> \n";
	if ( $files = get_children(array(   //do only if there are attachments of these qualifications
	 'post_parent' => get_the_ID(),
	 'post_type' => 'attachment',
	 'numberposts' => -1,
	 'post_mime_type' => 'application/pdf',  //MIME Type condition
	 ))){
	 foreach( $files as $file ){ //setup array for more than one file attachment
		$file_link = wp_get_attachment_url($file->ID);    //get the url for linkage
		$file_name_array=explode("/",$file_link);
		$file_name=array_reverse($file_name_array);  //creates an array out of the url and grabs the filename
		$sAttachmentString .= "<div class='documentIcons'>";
		$sAttachmentString .= "<a href='$file_link'>";
		$sAttachmentString .= "<img src='".get_bloginfo('template_directory')."/images/pdf.png'/>";
		$sAttachmentString .= "</a>";
		$sAttachmentString .= "<br>";
		$sAttachmentString .= "<a href='$file_link'>$file_name[0]</a>";
		$sAttachmentString .= "</div>";
		}
	}
	//Word Documents
	if ( $files = get_children(array(   //do only if there are attachments of these qualifications
	 'post_parent' => get_the_ID(),
	 'post_type' => 'attachment',
	 'numberposts' => -1,
	 'post_mime_type' => 'application/msword',  //MIME Type condition
	 ))){
	 foreach( $files as $file ){ //setup array for more than one file attachment
		$file_link = wp_get_attachment_url($file->ID);    //get the url for linkage
		$file_name_array=explode("/",$file_link);
		$file_name=array_reverse($file_name_array);  //creates an array out of the url and grabs the filename
		$sAttachmentString .= "<div class='documentIcons'>";
		$sAttachmentString .= "<a href='$file_link'>";
		$sAttachmentString .= "<img src='".get_bloginfo('template_directory')."/images/mime/word.png'/>";
		$sAttachmentString .= "</a>";
		$sAttachmentString .= "<br>";
		$sAttachmentString .= "<a href='$file_link'>$file_name[0]</a>";
		$sAttachmentString .= "</div>";
		}
	}
	//Powerpoint Documents
	if ( $files = get_children(array(   //do only if there are attachments of these qualifications
	 'post_parent' => get_the_ID(),
	 'post_type' => 'attachment',
	 'numberposts' => -1,
	 'post_mime_type' => 'application/vnd.ms-powerpoint',  //MIME Type condition
	 ))){
	 foreach( $files as $file ){ //setup array for more than one file attachment
		$file_link = wp_get_attachment_url($file->ID);    //get the url for linkage
		$file_name_array=explode("/",$file_link);
		$file_name=array_reverse($file_name_array);  //creates an array out of the url and grabs the filename
		$sAttachmentString .= "<div class='documentIcons'>";
		$sAttachmentString .= "<a href='$file_link'>";
		$sAttachmentString .= "<img src='".get_bloginfo('template_directory')."/images/mime/PowerPoint.png'/>";
		$sAttachmentString .= "</a>";
		$sAttachmentString .= "<br>";
		$sAttachmentString .= "<a href='$file_link'>$file_name[0]</a>";
		$sAttachmentString .= "</div>";
		}
	}
	//Excel Documents
	if ( $files = get_children(array(   //do only if there are attachments of these qualifications
	 'post_parent' => get_the_ID(),
	 'post_type' => 'attachment',
	 'numberposts' => -1,
	 'post_mime_type' => 'application/vnd.ms-excel',  //MIME Type condition
	 ))){
	 foreach( $files as $file ){ //setup array for more than one file attachment
		$file_link = wp_get_attachment_url($file->ID);    //get the url for linkage
		$file_name_array=explode("/",$file_link);
		$file_name=array_reverse($file_name_array);  //creates an array out of the url and grabs the filename
		$sAttachmentString .= "<div class='documentIcons'>";
		$sAttachmentString .= "<a href='$file_link'>";
		$sAttachmentString .= "<img src='".get_bloginfo('template_directory')."/images/mime/XLS8.png'/>";
		$sAttachmentString .= "</a>";
		$sAttachmentString .= "<br>";
		$sAttachmentString .= "<a href='$file_link'>$file_name[0]</a>";
		$sAttachmentString .= "</div>";
		}
	}
	//Zipped Files
	if ( $files = get_children(array(   //do only if there are attachments of these qualifications
	 'post_parent' => get_the_ID(),
	 'post_type' => 'attachment',
	 'numberposts' => -1,
	 'post_mime_type' => 'application/zip',  //MIME Type condition
	 ))){
	 foreach( $files as $file ){ //setup array for more than one file attachment
		$file_link = wp_get_attachment_url($file->ID);    //get the url for linkage
		$file_name_array=explode("/",$file_link);
		$file_name=array_reverse($file_name_array);  //creates an array out of the url and grabs the filename
		$sAttachmentString .= "<div class='documentIcons'>";
		$sAttachmentString .= "<a href='$file_link'>";
		$sAttachmentString .= "<img src='".get_bloginfo('template_directory')."/images/mime/zip.png'/>";
		$sAttachmentString .= "</a>";
		$sAttachmentString .= "<br>";
		$sAttachmentString .= "<a href='$file_link'>$file_name[0]</a>";
		$sAttachmentString .= "</div>";
		}
	}
	//Audio Files
	$mp3s = get_children(array(   //do only if there are attachments of these qualifications
	 'post_parent' => get_the_ID(),
	 'post_type' => 'attachment',
	 'numberposts' => -1,
	 'post_mime_type' => 'audio',  //MIME Type condition
	 ) );
	if (!empty($mp3s)) :
	$sAttachmentString .= "<ul class='audiofiles'>";
		foreach($mp3s as $mp3) :
    		$sAttachmentString .= "<li>";
			if(!empty($mp3->post_title)) : //checking to make sure the post title isn't empty
				$sAttachmentString .= "<h4 class='title'>".$mp3->post_title."</h4>";
			endif;
			if(!empty($mp3->post_content)) : //checking to make sure something exists in post_content (description)
				$sAttachmentString .= "<p class='description'>".$mp3->post_content."</p>";
			endif;
			$sAttachmentString .= "<object width='470' height='24' id='single".$mp3->ID."' name='single".$mp3->ID."'>";
				$sAttachmentString .= "<param name='movie' value='player.swf'>";
				$sAttachmentString .= "<param name='allowfullscreen' value='true'>";
				$sAttachmentString .= "<param name='allowscriptaccess' value='always'>";
				$sAttachmentString .= "<param name='wmode' value='transparent'>";
				$sAttachmentString .= "<param name='flashvars' value='file=".$mp3->guid."'>";
					$sAttachmentString .= "<embed ";
					  $sAttachmentString .= "id='single".$mp3->ID."' ";
					  $sAttachmentString .= "name='single".$mp3->ID."' ";
					  $sAttachmentString .= "src='".get_bloginfo('template_directory')."/jw/player.swf' ";
					  $sAttachmentString .= "width='470' ";
					  $sAttachmentString .= "height='24' ";
					  $sAttachmentString .= "bgcolor='#ffffff' ";
					  $sAttachmentString .= "allowscriptaccess='always' ";
					  $sAttachmentString .= "allowfullscreen='true' ";
					  $sAttachmentString .= "flashvars='file=".$mp3->guid."' ";
					$sAttachmentString .= "/>";
			$sAttachmentString .= "</object>";
                        $sAttachmentString .= "<a href='".$mp3->guid."'>Download</a>";
			$sAttachmentString .= "</li>";
		endforeach;
	$sAttachmentString .= "</ul>";
	endif;
$sAttachmentString .= "</div>";
if($echo){
    echo $sAttachmentString;
  }
  return $sAttachmentString;
}
add_shortcode('attachment icons', 'get_attachment_icons');

 

Acortar el título a determinada cantidad de caracteres:

function the_title2($before = '', $after = '', $echo = true, $length = false) {
    $title = get_the_title();
    if ( $length && is_numeric($length) ) {
		$title = mb_substr( $title, 0, $length, 'UTF-8' );
	}
    if ( strlen($title)> 0 ) {
		if ( strlen($title) == $length ) $title = apply_filters('the_title2', $before . $title . $after, $before, $after);
        if ( $echo ) echo $title;
        else return $title;
	}
}

Luego en el theme colocar la función con la cantidad de caracteres a imprimir:

<?php the_title2(15); ?>

 

Entradas Relacionadas

  • Sin entradas similares

Dejar un comentario

  1. […] Clase 19: Plugins y snippets recomendados. […]

Dejar un comentario