Mejora el estilo de tus Themes de Wordpress sin Plugins

  • Autor Autor SoloNegocios
  • Fecha de inicio Fecha de inicio
S

SoloNegocios

Xi
SEO
Les voy a dejar algunas funciones que les ayudaran mucho a dejar sus Themes mas bonitos sin necesidad de estar usando Plugins sin sentido

Mostrar la cantidad de Post de un autor

PHP:
function contar_post_autor($id)
{
 global $wpdb;
 return (int) $wpdb->get_var('SELECT count(id) FROM `'.$wpdb->prefix.'posts` where `post_type`=\'post\' and `post_status`=\'publish\' and `post_author`='.$id);
}

Se le pasa el ID del autor del Post, esto te muestra cuantos Post a hecho ese autor, mas adelante un ejemplo

Mostrar la cantidad de Comentarios de un autor

PHP:
function contar_comentarios_autor($id)
{
 global $wpdb;
 return (int) $wpdb->get_var('SELECT count(comment_ID) FROM `'.$wpdb->prefix.'comments` where `user_id`='.$id);
}

Se le pasa el ID del autor del Post, esto te muestra cuantos Comentarios a hecho ese autor, mas adelante un ejemplo

Mostrar los datos de un autor

PHP:
function datos_autor($id)
{
 $user_info = get_userdata($id);
 Echo '<br/>center>'.get_avatar($id,100).'</center>';
 Echo '<br/>Nombre: '.$user_info->user_nicename.'';
 Echo '<br/>Post: '.contar_post_autor($id).'';
 Echo '<br/>Comentarios: '.contar_comentarios_autor($id).'';
}

Esta función usa las 2 funciones anteriores (Mostrar Post de un autor y mostrar comentarios de un autor) sirve para mostrar los datos del autor de un Post, muestra el Avatar, el nombre, la cantidad de post y comentarios del autor

Si tienes un Blog con varios autores y lo colocas en el Single.php mostrara los datos del autor del Post que estés mirando, si lo colocas en el Sidebar y el Blog solo tiene 1 autor funciona para mostrar los datos del autor de el Blog o sea el dueño xD

Ejemplo:

2llhdu0.png


Imagen al lado de las categorias

PHP:
function imagen_categoria($postid=0)
{
 $categories = get_the_category($postid);
 echo '<img class="cat" src="http://www.tudominio.com/wp-content/imagen_categoria/' . $categories[0]->category_nicename . '.png"/>';
}

Sirve para asignarle una imagen a una categoría, mejor dicho como Taringa xD, no es para usarlo en el Sidebar ya que esta función te da la imagen de la categoría de un Post

Las imágenes deben estar guardadas en tu Hosting en la dirección que colocaste arriba (http://www.tudominio.com/wp-content/imagen_categoria/), los archivos deben llamarse igual a la categoría así que si tienes una categoría sexo la imagen debe ser sexo.png

Para que funcione bien los Post deben ser guardados en 1 sola categoría, si los guardas en mas categorías sale mal xD

Ejemplo en el Index:

PHP:
<?php imagen_categoria($post->ID); ?>
<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>

28md3c0.png


Igualito a Taringa no les parece xD

Thumbnail en el Index

PHP:
function dp_attachment_image($postid=0, $size='thumbnail', $attributes='')
{
 if ($postid<1)
  $postid = get_the_ID();
 if ($images = get_children(array(
		'post_parent' => $postid,
		'post_type' => 'attachment',
		'numberposts' => 1,
		'post_mime_type' => 'image',)))

 foreach($images as $image)
 {
  $attachment=wp_get_attachment_image_src($image->ID, $size);
 }
 else
  $attachment[0] = get_option('siteurl') . '/wp-content/themes/xD/images/Sin-Imagen.png';
  ?><img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> /><?php
}

Esta función me la robe de un Theme Premiun y le agregue una parte xD

Cuando subimos una imagen para un Post Wordpress por defecto la guarda en 3 tamaños (Full Size, Medium, Thumbnail) lo que hace esta función es mostrar la imagen que hemos subido para nuestro Post en el tamaño que le pasemos

No es como un Plugin que vi que tu tenias que subir el thumbnail para que lo mostrara, eso es una locura si Wordpress por defecto te da las Thumbnails de todas las imágenes que subes xD

Si tu Post no tiene una imagen no te preocupes puedes poner una que salga por defecto como hago yo en mis Blogs, para la imagen por defecto deben modificar la parte que dice "/wp-content/themes/xD/images/Sin-Imagen.png" por la dirección de la imagen que van a usar

Para que funcione en el Index deben colocar algo como esto

PHP:
<?php dp_attachment_image($post->ID, thumbnail,''); ?>

Ejemplo:

25upq9e.png


La imagen por defecto es la segunda obviamente xD, si quieren que se vea como mi sitio no basta con colocar el código deben jugar con el CSS para dejarlo como ustedes quieren, pero eso ya es otra historia xD

Mostrar Subcategorias cuando entras en una categoría

PHP:
function mostrar_categorias()
{
 if (is_category())
  {
   $catid = get_query_var('cat');
   $categories = get_the_category(get_cat_ID($catid));
   $cat=$categories[0]->category_parent;
   if($cat)
    wp_list_categories('title_li=&child_of=' . $cat . '');
   else
    wp_list_categories('title_li=&depth=1');
  }
  else
   wp_list_categories('title_li=&depth=1');
}

Nos sirve para Blogs que tienen cientos de Subcategorias como mi Blog de Descargas (tusdescargasdirectas.net), en el Index pueden ver las categorías pero cuando entrar en una de ellas solo les mostrara las SubCategorias

Ejemplo:

Categorías en el Index
24wsj7l.png


SubCategorias cuando estas dentro de la categoría Internet
fnd9gz.png


Buscador con URL amigables

PHP:
<form id="search" action="/index.php" method="get" onsubmit="location.href='/search/' + encodeURIComponent(this.s.value).replace(/%20/g, '+') + '/'; return false;">
<input type="text" maxlength="255" name="s" id="s" size="24" class="searchbox"/>
<input type="submit" name="sa" value="Buscar" id="sbb" class="button"></input></form>

Simplemente un buscador que usa URLs amigables, si alguien busca Juegos para Wii, la URL que mostrara sera algo como esto "/search/juegos+para+wii"

Bueno ya me canse, otro dia dejo mas funciones interesantes ya les ahorre el uso de unos 5 Plugins xD
 
Última edición:
Excelente tuto SN!

Dedito para ti (?)
 
Es muy bueno incluso he aprendido a sustituir AIO Seo Pack, plugins de autor, funciones y cosas que hago con funciones, shortcodes, ediciones en el codigo y etiquetas del codex de wordpress a lo largo de mi experiencia en WP, usar mucho plugin es malo para la salud, es como no hacer ejercicio y enmarranar (engordar).

Dedito verde, si fuera admin lo pondria sticky.
 
Es muy bueno incluso he aprendido a sustituir AIO Seo Pack, plugins de autor, funciones y cosas que hago con funciones, shortcodes, ediciones en el codigo y etiquetas del codex de wordpress a lo largo de mi experiencia en WP, usar mucho plugin es malo para la salud, es como no hacer ejercicio y enmarranar (engordar).

Dedito verde, si fuera admin lo pondria sticky.

Como lo sustituiste? el AIO Seo Pack

Vi esto de rapido ya que voy de salida, pero lo que le puse atención es muy bueno, a tener mucho en cuenta, muchas gracias 😀
 
Gracias man, excelente aporte!!
 
Dedo verde, ojalá termines la lista!!
 
Me refiero a por ejemplo:
PHP:
<?php if ( is_category()) : ?>
	<meta name="description" content="Concepto Pixel - <?php echo category_description() ?>" />
<?php endif; ?>

Es facil pero por ahora confio en SEO Pack, ligero y simple, aunque teoricamente comprobado se puede sustituir por codigo META y condicionantes.
 
Muy buen post, te recomendaria mejor usar esto para lo de las imagenes de las categorias:

PHP:
function imagen_categoria($postid=0)
{
 $directory = get_bloginfo('template_directory');
 $categories = get_the_category($postid);
 echo '<img class="cat" src="'.$directory.'/imagenes/' . $categories[0]->category_nicename . '.png"/>';
}

Asi de esta forma solo tienes que meter las imagenes de las categorias en la carpeta imagenes del theme 🙂 igual se puede cambiar lo de imagenes por "img", "images" o como se llame la carpeta de las imagenes del theme.

Por cierto yo en un theme tenia modificado para que aparecieran varias metatags (description, keywords) de forma automatica en cada post (sin ningun plugin), si les interesa busco el codigo y lo pongo
 
Perfecto, me será de mucha ayuda. Gracias.
 
Buenisimo el post! Me ahorraste varias googleadas futuras 😛

Ah, modifique un poco el snippet para mostrar los thumbnail...
Creo que asi es mas facil:

PHP:
	function get_image($postid = FALSE, $size = 'thumbnail')
	{
		if ($postid == FALSE)
		{
			$postid = get_the_ID();	
		}
		

		$args = array(
			'post_type' => 'attachment',
			'numberposts' => 1,
			'post_status' => null,
			'post_parent' => $postid,
			'post_mime_type' => 'image'
		);
	
		$result = get_posts($args);
		$image_id = $result[0]->ID;
		$image = $result[0]->guid;
		
		if(!empty($image))
		{
			$return = wp_get_attachment_image_src($image_id, $size);
			
			echo $return[0];
		}
		else
		{

			echo get_bloginfo('template_url'), '/images/sin-imagen.png';
		}
		
	}

PHP:
<img src="<?php get_image(); ?>" alt="Lo que quiera" />

Creo que lo mas notable es el uso get_posts (en el codex recomiendan usar esta antes que get_children) y que es "mas legible", aunque tambien va a funcionar un poquito mas rapido, creo 😛

Edit: Me olvidaba... se puede usar "thumbnail", "medium", "large" o "full size" para obtener las imágenes (Las dimensiones se pueden cambiar en el panel de administración).
PHP:
<img src="<?php get_image(FALSE, 'large'); ?>" alt="Lo que quiera" />

Edit 2: Corregido "pequeño error crítico" en el código.
 
Última edición:
Buenisimo el post! Me ahorraste varias googleadas futuras 😛

Ah, modifique un poco el snippet para mostrar los thumbnail...
Creo que asi es mas facil:

PHP:
	function get_image($postid = FALSE, $size = 'thumbnail')
	{
		if (!$postid)
		{
			$postid = get_the_ID();	
		}

		$args = array(
			'post_type' => 'attachment',
			'numberposts' => 1,
			'post_status' => null,
			'post_parent' => $post->ID,
			'post_mime_type' => 'image'
		);
	
		$result = get_posts($args);
		$image = $result[0]->guid;
		
		if(!empty($image))
		{
			$return = wp_get_attachment_image_src(10, $size);
			return $return[0];
		}
		else
		{
			return get_bloginfo('template_url') . '/images/sin-imagen.png';
		}
		
	}

PHP:
<img src="<?php get_image(); ?>" alt="Lo que quiera" />

Creo que lo mas notable es el uso get_posts (en el codex recomiendan usar esta antes que get_children) y que es "mas legible", aunque tambien va a funcionar un poquito mas rapido, creo 😛

Edit: Me olvidaba... se puede usar "thumbnail", "medium", "large" o "full size" para obtener las imágenes (Las dimensiones se pueden cambiar en el panel de administración).
PHP:
<img src="<?php get_image(FALSE, 'large'); ?>" alt="Lo que quiera" />

Eso me recuerda que yo antes estaba usando funciones deprecadas y cuando las sacaron de WP se me jodio el Theme xD
 
PHP:
<?php imagen_categoria($post->ID); ?>
<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
No entendi esto de las categorias, donde pongo la imagen y el nomnre de caqtegoria?

Edito: muy buenoS!!
 
excelentes tutoriales soloestafas, te agradezco mucho porque estaba buscando lo de los thumbnails, gracias.
 
Buenisimo men, excelente post 😀 te felicito.
Sin duda son codigos muy utiles.
 
WOW!!, excelente aporte, gracias
 
Muy bueno, gracias por el aporte. excelente
 
Muy bueno tu post propongo que lo pongan como importante para que no se pierda el post.
 
te luciste me ayudara mucho gracias
 
Agregar y quitar campos en el Profile.php

En el Profile.php tenemos algunos campos basura que nunca usamos (AIM, Yahoo IM, Jabber / Google Talk), con tan solo modificar el archivo Functions.php podemos quitar estos campos basura y si queremos agregamos nuevos campos

Vamos al archivo Functions.php y colocamos lo siguiente
PHP:
<?php
function nuevos_campos($campos)
{

 //Quita el campo para el aim
 unset($campos['aim']);

 //Quita el campo para el jabber
 unset($campos['jabber']);

 //Quita el campo para el Yahoo IM
 unset($campos['yim']);

 //Agrega el campo para el Teléfono
 $campos['telefono'] = 'Telefono';

 //Agrega el campo para el Twitter
 $campos['twitter'] = 'Twitter';

 //Agrega el campo para el Facebook
 $campos['facebook'] = 'Facebook';

 //Agrega el campo para el Anime favorito
 $campos['anime'] = 'Anime';

 return $campos;
}
add_filter('user_contactmethods','nuevos_campos',10,1);
?>

Nos debe quedar algo como esto

2zg88c7.png

Ahora si queremos mostrar en nuestro Theme alguno de los datos como el Twitter, el Facebook o el teléfono solo debemos usar el código
<?php the_author_meta('Nombre que pusimos dentro de los corchetes del codigo anterior'); ?>

Ejemplo:

PHP:
<?php the_author_meta('telefono'); ?>
<?php the_author_meta('twitter'); ?>
<?php the_author_meta('facebook'); ?>
<?php the_author_meta('anime'); ?>

Agregar un campo para que cada usuario coloque un bloque de Adsense

En el código anterior vimos como colocar un campo de texto para que los usuarios del Blog coloquen nuevos datos, esta vez les voy a enseñar a colocar un campo de texto donde podamos colocar nuestro código de Adsense

Vamos al archivo Functions.php y colocamos este código

PHP:
<?php

 //Agrega el campo para el bloque de Adsense
function mostrar_campo_adsense_perfil($user)
{
 ?>
 <h3>Adsense</h3>
 <table class="form-table">
  <tr>
   <th><label for="adsense">Bloque Adsense</label></th>
   <td><textarea name="adsense" id="adsense" rows="10" cols="40" ><?php echo esc_attr( get_the_author_meta( 'adsense', $user->ID ) ); ?></textarea><br/><span class="description">Quieres ganar mejor te recomiendo un bloque de 336x280</span>
   </td>
  </tr>
 </table>
<?php
}

add_action( 'show_user_profile', 'mostrar_campo_adsense_perfil' );
add_action( 'edit_user_profile', 'mostrar_campo_adsense_perfil' );

 //Sirve para grabar lo que digitan en el campo del bloque de Adsense
function grabar_campo_adsense_perfil( $user_id )
{
 if ( !current_user_can( 'edit_user', $user_id ) )
  return false;
 update_usermeta( $user_id, 'adsense', $_POST['adsense'] );
}

add_action( 'personal_options_update', 'grabar_campo_adsense_perfil' );
add_action( 'edit_user_profile_update', 'grabar_campo_adsense_perfil' );
?>

Con este código nos debe quedar algo como esto en el profile.php

21j3faf.png

Con esto todos tus redactores podrán colocar su bloque de Adsense, se preguntaran ¿Y eso para que? si eres un Bloggger generoso 🙂afraid🙂 y quieres permitirle a tus redactores que muestren su Adsense dentro de sus post puedes usar ese código.

Pero no he terminado el código era para que los redactores del Blog colocaran su código de Adsense en el Profile.php, ahora tenemos que hacer que ese código se muestre dentro de los Post escritos por cada usuario.

De nuevo vamos al Functions.php y colocamos el siguiente código

PHP:
function mostrar_adsense_autor_post()
{
 Global $post;
 $obj_author = get_userdata($post->post_author);
 the_author_meta('adsense',$obj_author->ID);
}

El código the_author_meta('Nombre del campo',$obj_author->ID); es el que muestra el bloque de Adsense de cada autor en los Post que a escrito, donde dice "Nombre del campo" colocamos el nombre que le habíamos dado en el otro código o sea 'adsense'

Ahora vamos a nuestro Single.php y colocamos el siguiente código

PHP:
<?php mostrar_adsense_autor_post() ?>

Ahora se mostrara dentro de los Post el codigo de cada redactor, si el Post lo hace "Juanito" se mostrara su Adsense en ese post.

Una cosa este código es un poco jodido debemos recordar que solo podemos mostrar anuncios de 1 sola cuenta al mismo tiempo así que eres novato no lo uses :top:, aunque el código sirve para aprender y eso es lo que realmente importa

Como vieron pudimos colocar un TextBox para el código de Adsense, tambien podemos colocar CheckBox, listas y lo que queramos solo hay que aprender HTML :aetsch:

Cuando deje la flojera mas códigos interesantes para practicar :top:
 
Atrás
Arriba