Funciones Premiun para Wordpress Sin usar Plugins

SoloNegocios

Xi
SEO
Verificación en dos pasos desactivada
Desde
11 Abr 2009
Mensajes
4.371
Edad
36
Crédito(s)
0
Puntos
58
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:



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>


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:



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


SubCategorias cuando estas dentro de la categoría Internet


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:

vicarlone

1
Pi
Redactor
Verificación en dos pasos desactivada
¡Excelente comerciante!
Desde
6 Abr 2009
Mensajes
10.487
Crédito(s)
0
Puntos
480
Excelente tuto SN!

Dedito para ti (?)
 

crystaldream

Iota
Diseñador
Verificación en dos pasos desactivada
Desde
29 May 2009
Mensajes
2.186
Crédito(s)
0
Puntos
26
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.
 

cuisi

Iota
SEO
Verificación en dos pasos desactivada
Desde
14 Jun 2009
Mensajes
2.311
Edad
34
Crédito(s)
0
Puntos
21
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 :D
 

khaos

Delta
Verificación en dos pasos desactivada
Desde
6 Sep 2009
Mensajes
571
Crédito(s)
0
Puntos
5
Gracias man, excelente aporte!!
 

crystaldream

Iota
Diseñador
Verificación en dos pasos desactivada
Desde
29 May 2009
Mensajes
2.186
Crédito(s)
0
Puntos
26
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.
 

alex

Zeta
Programador
Verificación en dos pasos desactivada
Desde
7 Abr 2009
Mensajes
1.753
Edad
27
Crédito(s)
1
Puntos
50
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
 

Warfield

Zeta
Programador
Verificación en dos pasos desactivada
Desde
14 Oct 2008
Mensajes
1.690
Crédito(s)
0
Puntos
169
Perfecto, me será de mucha ayuda. Gracias.
 

Santiago

Gamma
Verificación en dos pasos desactivada
Desde
18 Jul 2009
Mensajes
151
Edad
26
Crédito(s)
0
Puntos
0
Buenisimo el post! Me ahorraste varias googleadas futuras :p

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 :p

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:

SoloNegocios

Xi
SEO
Verificación en dos pasos desactivada
Desde
11 Abr 2009
Mensajes
4.371
Edad
36
Crédito(s)
0
Puntos
58
Buenisimo el post! Me ahorraste varias googleadas futuras :p

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 :p

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
 

FabricioV

Ni
Verificación en dos pasos activada
Desde
29 Dic 2009
Mensajes
3.668
Crédito(s)
0
Puntos
29
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!!
 

Nachitox

Épsilon
Diseñador
Verificación en dos pasos desactivada
Desde
15 Nov 2009
Mensajes
919
Crédito(s)
0
Puntos
44
excelentes tutoriales soloestafas, te agradezco mucho porque estaba buscando lo de los thumbnails, gracias.
 

Plaga

Moderador
1
Pi
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Excelente comerciante!
Desde
15 Abr 2009
Mensajes
8.030
Edad
31
Crédito(s)
0
Puntos
1.170
Buenisimo men, excelente post :D te felicito.
Sin duda son codigos muy utiles.
 

Diego

Iota
SEO
Verificación en dos pasos desactivada
Desde
10 Abr 2009
Mensajes
2.365
Crédito(s)
0
Puntos
26
Muy bueno, gracias por el aporte. excelente
 

aldoretamozo

Gamma
Verificación en dos pasos desactivada
Desde
11 Feb 2009
Mensajes
207
Crédito(s)
0
Puntos
19
Muy bueno tu post propongo que lo pongan como importante para que no se pierda el post.
 

SoloNegocios

Xi
SEO
Verificación en dos pasos desactivada
Desde
11 Abr 2009
Mensajes
4.371
Edad
36
Crédito(s)
0
Puntos
58
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


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


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:
 

Arriba