Recopilación de 45 trucos para Wordpress
Translate this page into English
Esta es una recopilación de los mejores trucos que he ido recopilando para Wordpress de diversas fuentes (las principales están al pie del artículo). Muchos de ellos los utilizo con frecuencia.
Sobre Artículos
Mostrar los artículos más recientes
Este código muestra los cinco artículos más recientes:
1
2
3
4
5
6
| <?php query_posts('showposts=5'); ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul> |
Mostrar los artículos o páginas recientemente actualizadas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?php
$today = current_time('mysql', 1);
$howMany = 5; //Número de entradas que quieres mostrar
if ( $recentposts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_modified_gmt < '$today' ORDER BY post_modified_gmt DESC LIMIT $howMany")):
?>
<h2><?php _e("Ultimas actualizaciones"); ?></h2>
<ul>
<?php
foreach ($recentposts as $post) {
if ($post->post_title == '') $post->post_title = sprintf(__('Post #%s'), $post->ID);
echo "<li><a href='".get_permalink($post->ID)."'>";
the_title();
echo '</a></li>';
}
?>
</ul>
<?php endif; ?> |
Mostras los artículos “pegados” (sticky) más recientes
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
/* Obtener todos los artículos sticky */
$sticky = get_option( 'sticky_posts' );
/* Ordenar los artículos sticky con los más nuevos arriba */
rsort( $sticky );
/* Obtener los dos artículos sticky más nuevos (cambia el 2 por el número que quieras) */
$sticky = array_slice( $sticky, 0, 2 );
/* Hacer un query_posts con los artículos sticky */
query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );
?> |
Mostrar los artículos más populares en función del número de comentarios
1
2
3
4
5
6
7
8
9
10
11
12
| <ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
<?php } } ?>
</ul> |
Añadir enlaces de traducción de los artículos a otros idiomas
1
| <a href="http://translate.google.com/translate?u=<?php echo urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); ?>&langpair=es%7Cen" class="translate" title="Translate this page using Google Translate" rel="nofollow">Translate this page into English</a> |
Para otros idiomas simplemente sustituye el en de langpair=es%7Cen por de (Alemán), fr (Frances), it (Italiano), pt (Portugués), ar (Arabe), ja (Japonés, ko (Koreano), etc…
Incluir código PHP dentro de los artículos (desde el administrador)
Al escribir código desde el editor del administrador dentro de un artículo Wordpress transforma los códigos de inicio y final de php en caracteres de texto, por lo tanto si escribes:
1
| <? php query_posts('p=5'); ?> |
no ocurrirá nada. Hay que sustituirlo por sus códigos equivalentes:
1
| <? php query_posts('p=5'); ?> |
Lista de futuros artículos
1
2
3
4
5
6
7
| <?php query_posts('showposts=10&post_status=future'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<span class="datetime"><?php the_time('j. F Y'); ?></span></p>
<?php endwhile;
else: ?><p>No está programado ningún artículo</p>
<?php endif; ?> |
Mostrar otros artículos del mismo autor y de la misma categoría
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
| post->post_author;
$tempQuery = $wp_query;
$currentId = $post->ID;
// Otros artículos del mismo autor
$newQuery = "posts_per_page=5&author=" . $authorPosts;
query_posts( $newQuery );
$authorPosts = "";
$count = 0;
if (have_posts()) {
while (have_posts()) {
$count++;
the_post();
if( $count<4 && $currentId!=$post->ID) {
$count++;
$authorPosts .= '
<li><a href="%27%20.%20get_permalink%28%29%20.%20%27">' . the_title( "", "", false ) . '</a></li>
';
}
}
}
// Otros artículos de la misma categoría
$catlist = "";
forEach( $cats as $c ) {
if( $catlist != "" ) { $catlist .= ","; }
$catlist .= $c->cat_ID;
}
$newQuery = "posts_per_page=5&cat=" . $catlist;
query_posts( $newQuery );
$categoryPosts = "";
$count = 0;
if (have_posts()) {
while (have_posts()) {
the_post();
if( $count<4 && $currentId!=$post->ID) {
$count++;
$categoryPosts .= '
<li><a href="%27%20.%20get_permalink%28%29%20.%20%27">' . the_title( "", "", false ) . '</a></li>
';
}
}
}
$wp_query = $tempQuery;
?> |
Mostrar un submenú de páginas en la barra lateral
1
2
3
| <?php$children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');if ($children) { ?><ul> <?php echo $children; ?>
</ul>
<?php } ?> |
Sobre Comentarios
Mostrar los últimos comentarios
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
| <?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,30) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author)
.":" . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"en " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;?> |
Reordenar los comentarios para que aparezcan primero los más recientes
Busca esta línea en comments.php:
1
| foreach ($comments as $comment) |
Añade antes de ella esta otra línea:
1
| $comments = array_reverse($comments); |
Dar un diseño diferente a los comentarios del autor del blog
Fuente: Highlight Author Comments in Wordpress
Abre tu hoja de estilos (normalmente style.css) y añade este código:
1
2
3
| .authcomment {
background-color: #B3FFCC !important;
} |
Solamente hemos cambiado el fondo del comentario. Aquí podrás dar el diseño que te parezca más oportuno.
Después ve al archivo comments.php y busca esta línea:
1
| <li class=”<?php echo $oddcomment; ?> |
Y sustitúyela por:
1
2
3
4
| <li class=”<?php
if (1 == $comment->user_id)
$oddcomment = “authcomment”;
echo $oddcomment;?> |
Ten en cuenta que el autor por defecto en Wordpress es “admin” por lo que el valor por defecto de “user_id” es ‘1?, por lo que si has cambiado el administrador por defecto (muy recomendable) creando un nuevo usuario tendrás que cambiar el valor de “user_id” por el nuevo, que se puede encontrar facilmente en Usuarios -> Autores y Usuarios de tu Tablero de Wordpress pasando el ratón sobre el número de entradas. El URL será algo parecido a http://www.tudominio.com/wp-admin/edit.php?author=”user_id”
Sobre Categorías
Mostrar una lista de categorías
1
2
3
4
| <h2>Categories</h2>
<ul>
<?php wp_list_cats('sort_column=name'); ?>
</ul> |
Eliminar ciertas categorías del Loop
1
2
3
4
5
6
7
| <?php query_posts('cat=-3'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Ir a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
<p><?php the_time('j'); ?> de <?php the_time('F'); ?> de <?php the_time('Y'); ?></p>
<?php the_content(); ?>
<?php endwhile; ?> |
Mostrar las categorías en un menú desplegable
1
2
3
4
5
6
| <form action="<?php bloginfo('url'); ?>/" method="get">
<?php
$select = wp_dropdown_categories('show_option_none=Seleccionar categoría&show_count=1&orderby=name&echo=0');
$select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select); echo $select; ?>
<noscript><input type="submit" value="Ver" /></noscript>
</form> |
Relacionados con el Loop
Crea tus propios Loops utilizando WP_Query
1
2
3
4
5
6
7
8
9
| <?php
$myPosts = new WP_Query();
$myPosts->query('showposts=5');
while ($myPosts->have_posts()) : $myPosts->the_post(); ?>
the_title();
the_content();
endwhile;
?> |
Crear un loop con la primera imagen de cada artículo
Primero hay que crear esta función y añadirla en functions.php de nuestro tema:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ // Define una imagen por defecto
$first_img = "/images/default.jpg";
}
return $first_img;
} |
Ahora ya podemos obtener las imágenes y crear el loop:
1
2
3
4
5
6
7
8
9
| <?php
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink();?>" title="<?php the_title(); ?>" class="img-loop">
<img src="http://media1.smashingmagazine.com/wp-content/uploads/images/wordpress-loop-hacks/<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>" />
</a>
endwhile;
endif;
?> |
Relacionados con el Archivo
Mostrar los archivos por meses
1
2
3
4
| <h2>Archivos</h2>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul> |
Mostrar los archivos en un menú desplegable
1
2
3
| <select name=\"archive-dropdown\" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=\"\"><?php echo attribute_escape(__('Seleccionar Mes')); ?></option>
<?php wp_get_archives('type=monthly&format=option&show_post_count=1'); ?> </select> |
Relacionados con los Avatares
Mostrar Gravatars
1
| <?php if(function_exists(’get_avatar’)){ echo get_avatar($comment, ‘50?);} ?> |
Cambiar el tamaño del avatar
1
| <?php wp_list_comments('avatar_size=80'); ?> |
Relacionados con las Etiquetas
Mostrar las etiquetas
Mostrar una nube de etiquetas
1
| <?php wp_tag_cloud('smallest=8&largest=36&'); ?> |
Mostrar artículos relacionados sin plugin en base a etiquetas
Abre single.php e incluye este código dentro del loop. Obtiene la primera etiqueta y muestra los últimos 5 artículos con la misma etiqueta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <?php
/para usar dentro del loop, muestra los títulos de 5 artículos relacionados con la primera etiqueta del artículo actual
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo 'Artículos relacionados';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Enlace a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php
endwhile;
}
}
?> |
Obtener etiquetas relacionadas con una categoría
Obtenido de WpRecipes. Se incluye esta función en functions.php:
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
| function get_category_tags($args) {
global $wpdb;
$tags = $wpdb->get_results
("
SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, null as tag_link
FROM
wp_posts as p1
LEFT JOIN wp_term_relationships as r1 ON p1.ID = r1.object_ID
LEFT JOIN wp_term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
LEFT JOIN wp_terms as terms1 ON t1.term_id = terms1.term_id,
wp_posts as p2
LEFT JOIN wp_term_relationships as r2 ON p2.ID = r2.object_ID
LEFT JOIN wp_term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
LEFT JOIN wp_terms as terms2 ON t2.term_id = terms2.term_id
WHERE
t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms1.term_id IN (".$args['categories'].") AND
t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
AND p1.ID = p2.ID
ORDER by tag_name
");
$count = 0;
foreach ($tags as $tag) {
$tags[$count]->tag_link = get_tag_link($tag->tag_id);
$count++;
}
return $tags;
} |
Entonces ya podemos llamar a la función en nuestro tema:
1
2
| $args = array('categories' => '12,13,14');
$tags = get_category_tags($args); |
Relacionados con Imágenes
Obtener la primera imagen de cada artículo y ofrecerla en la página principal del blog como imagen del artículo
Es una alternativa a los campos personalizados utilizados para este mismo uso.
Hay que añadir esta función al archivo functions.php de tu tema:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Imagen por defecto
$first_img = "/images/default.jpg";
}
return $first_img;
} |
En la página principal de tu blog (index.php) incluye ahora una llamada a la función:
1
| <?php echo catch_that_image() ?> |
Cambiar de forma automática el tamaño de las imágenes usando Timthumb
Permite cambiar de manera automática el tamaño de las imágenes. Para ello necesitar bajarte este timthumb.php, crear un directorio en tu tema que se llame scripts y copiarlo ahí. Una vez hecho puedes mostrar las imágenes haciendo (en este caso lo redimensionamos a 150×150):
1
| <img src="/scripts/timthumb.php?src=/images/nombredelaimagen.jpg&h=150&w=150&zc=1" alt="Screenshot" /> |
Cambiar de forma automática el tamaño de las imágenes usando funciones internas de Wordpress
Fuente: Create thumbnails using Wordpress built-in functions
En wp-includes/media.php hay una serie de funciones que Wordpress usa para manipular ficheros. La que necesitamos es image_resize():
1
2
3
4
| /**
*Reducir una imagen a un tamaño concreto y grabar una nueva copia de la imagen.
*/
function image_resize( $file, $max_w, $max_h, $crop=false, $suffix=null, $dest_path=null, $jpeg_quality=90) |
Puedes usarlo así para crear una nueva imagen de 100×60:
1
2
| // cambiar el tamaño de la imagen
$thumb = image_resize($img,100,60,true); |
Lo malo es que como Wordpress utiliza esta función en el administrador se necesita algo de código que no está disponible por defecto en los códigos. Esto lo puedes arreglar incluyendo wp-admin/includes/image.php en la prate superior del archivo functions.php de tu tema:
1
2
| /// admin image API
require_once(ABSPATH . '/wp-admin/includes/image.php'); |
Relacionados con Búsquedas
Indicar el término incluido en la búsqueda
1
| <h4>Has buscado "<?php the_search_query() ?>". Aquí están los resultados:</h4> |
Remarcar el término buscado en los resultados de una búsqueda
Abre search.php file y sustituye
por
Y justo antes de esa línea recién modificada añade:
1
2
3
4
5
6
7
| <?php
$title = get_the_title();
$keys= explode(" ",$s);
$title = preg_replace('/('.implode('|', $keys) .')/iu',
'<strong class="search-excerpt">\0</strong>',
$title);
?> |
Y en tu hoja de estilos, normalmente style.css, añade:
1
| strong.search-excerpt { background: yellow; } |
Relacionados con Redes Sociales, RSS, Compartir artículos
Mostrar un RSS externo
1
2
| <?php include_once(ABSPATH.WPINC.'/rss.php');
wp_rss('http://wpforums.com/external.php?type=RSS2', 5); ?> |
Compartir el artículo por e-mail
1
2
3
| <a href="mailto:?subject=<?php the_title();
?>&body=<?php the_permalink() ?>" title="Send this
article to a friend!">Email this</a> |
Crear un botón para “Compartir en Facebook”
1
| <a href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php the_title(); ?>" target="blank">Compartir en Facebook</a> |
Mostrar enlaces válidos a redes sociales en una tabla
Requiere añadir los iconos de las redes sociales, que se encuentran facilmente en internet. También requiere el nombre de usuario en Twitter, en vez de la de Alex Denning (de WPShout, autor original del artículo, incluído en Lecturas Recomendadas).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <table border="0">
<tr>
<td><a rel="nofollow" href="http://delicious.com/post?url=<?php the_permalink(); ?>&title=<?php echo urlencode(get_the_title($id)); ?>" title="Marca este artículo en Delicious"><img src="<?php bloginfo('template_url'); ?>/images/delicious.png" alt="Compartir en Delicious" /></a></td>
<td><a rel="nofollow" href="http://digg.com/submit?phase=2&url=<?php the_permalink(); ?>" title="Enviar este artículo a Digg"><img src="<?php bloginfo('template_url'); ?>/images/digg.png" alt="Compartir en Digg" /></a></td>
<td><a rel="nofollow" href="http://reddit.com/submit?url=<?php the_permalink(); ?>&title=<?php echo urlencode(get_the_title($id)); ?>" title="Compartir en Reddit"><img src="<?php bloginfo('template_url'); ?>/images/reddit.png" alt="Compartir en Reddit" /></a></td>
<td><a rel="nofollow" href="http://feeds2.feedburner.com/nombre" title="Suscribir mediante RSS"><img src="<?php bloginfo('template_url'); ?>/images/rss.png" alt="Suscribir mediante RSS" /></a></td>
<td><a rel="nofollow" href="http://www.stumbleupon.com/submit?url=<?php the_permalink(); ?>&title=<?php echo urlencode(get_the_title($id)); ?>" title="Compartir en StumbleUpon"><img src="<?php bloginfo('template_url'); ?>/images/stumbleupon.png" alt="Compartir en StumbleUpon" /></a></td>
<td><a rel="nofollow" href="http://twitter.com/home?status=<?php echo urlencode("RT @AlexDenning: "); ?><?php the_title(); ?> --> <?php the_permalink(); ?>" title="Compartir con tus seguidores de Twitter"><img src="<?php bloginfo('template_url'); ?>/images/twitter.png" alt="Compartir en Twitter" /></a></td>
</tr>
</table> |
Mostrar la entrada de Twitter más reciente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <?php
// Tu usuario de Twitter.
$username = "UsuariodeTwitter";
// Prefijo - Texto que quieras incluir antes de tus últimos tweets.
// (Puede ser HTML pero asegúrate de poner barras invertidas antes de las comillas, por ejemplo: href=\"link.html\")
$prefix = "";
// Sufijo - texto que quieras mostrar después de tu último tweet. (Mismas reglas que con el prefijo.)
$suffix = "";
$feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=1";
function parse_feed($feed) {
$stepOne = explode("<content type=\"html\">", $feed);
$stepTwo = explode("</content>", $stepOne[1]);
$tweet = $stepTwo[0];
$tweet = str_replace(”<”, “<”, $tweet);
$tweet = str_replace(”>”, “>”, $tweet);
return $tweet;
}
$twitterFeed = file_get_contents($feed);
echo stripslashes($prefix) . parse_feed($twitterFeed) . stripslashes($suffix);
?> |
Relacionados con jQuery
Incluir jQuery (incluído en la instalación de Wordpress)
Incluye la propia copia de jQuery incluída en Wordpress. Debe ir antes de wp_head
1
| <?php wp_enqueue_script("jquery"); ?> |
Incluir jQuery desde Google (en vez del incluído en Wordpress)
Se añade este código en functions.php de nuestro tema:
1
2
3
4
5
| if( !is_admin()){
wp_deregister_script('jquery');
wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"), false, '1.3.2');
wp_enqueue_script('jquery');
} |
La última línea logra que no haya hacer nada en el header por lo que con esto bastaría, siempre y cuando en tu tema tengas incluído en la cabecera wp_head();
Relacionados con Campos Personalizados
Usando campos personalizados (Custom Fields)
Mostrarlos en una lista
Utilizar campos personalizados para mostrar imágenes (y cambiarlas su tamaño usando timthumb), con una imagen alternativa si no hubiera imagen
Necesitas tener cargado timthumb en tu tema/scripts (ver más arriba cómo usarlo).
1
2
3
4
5
6
7
| <?php $postimageurl = get_post_meta($post->ID, 'Image', true);
if ($postimageurl) {
?>
<img src="<?php bloginfo(‘template_url’); ?> /scripts/timthumb.php?src=<?php echo get_post_meta($post->ID, "Image", true); ?>&h=250&w=250&zc=1" alt="<?php the_title(); ?>" />
<?php } else { ?>
<img src="<?php bloginfo('template_url'); ?>/images/noimage.jpg" alt="No hay imagen disponible" />
<?php } ?> |
Mostrar el valor de un campo personalizado específico
1
| <?php echo get_post_meta($post->ID, 'mood', true); ?> |
Mostrar múltiples valores de un campo personalizado que tiene el mismo ID
1
2
3
4
5
6
7
| <?php $songs = get_post_meta($post->ID, 'songs', false); ?>
<h3>Artículo inspirado por:</h3>
<ul>
<?php foreach($songs as $song) {
echo '<li>'.$song.'</li>';
} ?>
</ul> |
Mostrar un campo personalizado sólo si existe
1
2
3
4
5
6
| <?php
$url = get_post_meta($post->ID, 'snippet-reference-URL', true);
if ($url) {
echo "<p><a href='$url'>URL de Referencía</a>";
}
?> |
Varios
Títulos dinámicos
1
2
3
4
5
6
7
8
9
10
11
12
13
| <title><?phpif (is_home()) { echo bloginfo('name');
} elseif (is_404()) {
echo '404 No Encontrado';
} elseif (is_category()) {
echo 'Categoría:'; wp_title('');
} elseif (is_search()) {
echo 'Resultados de la búsqueda';
} elseif ( is_day() || is_month() || is_year() ) {
echo 'Archivos:'; wp_title('');
} else {
echo wp_title('');
}
?></title> |
Incluir una página dentro de otra
1
2
3
4
| <?php $recent = new WP_Query("page_id=**ID**"); while($recent->have_posts()) : $recent->the_post();?>
<h3><?php the_title(); ?></h3>
<?php the_content(); ?>
<?php endwhile; ?> |
Obtener el ID de la página de jerarquía superior
1
2
3
4
5
6
7
8
9
| <?php
if ($post->post_parent) {
$ancestors=get_post_ancestors($post->ID);
$root=count($ancestors)-1;
$parent = $ancestors[$root];
} else {
$parent = $post->ID;
}
?> |
Dar una clase dinámica a body en función del tipo de página, de la categoría, etc..
1
| <body <?php body_class(); ?>> |
Mostrar una guía (breadcrumbs) de Inicio/Categoría/Título
1
| <?php bloginfo(‘home’); ?> / <?php the_category(); ?> / <?php the_title(); ?> |
Proteger tu e-mail de spam
Si no tienes más remedio que mostrar tu dirección de e-mail puedes utilizar la función antispambot() que se encuentra en Wordpress:
1
| <?php echo antispambot(get_the_author_email()); ?> |
Uso de la función post_class() para incluir nuestras propias clases
Permite incluir nuestras propias clases. Su uso sería para añadir la clase estilo, por ejemplo:
1
| <div id="post-<?php the_ID(); ?>" <?php post_class('estilo'); ?>> |
El resultado sería:
1
| <div class="post sticky hentry category-icons estilo" id="post-5966"> |
Lecturas recomendadas y fuentes del artículo
Wordpress Hacks – Huge compilation of Wordpress Code
WPShout, 10 Really Useful WordPress Code Snippets
Smashing Magazine, 10 Useful WordPress Loop Hacks
Smashing Magazine, 10 Exceptional WordPress Hacks
Vanderlay, 9 WordPress Hacks to Encourage User Interactivity
Noupe, Mastering Your WordPress Theme Hacks and Techniques
Comparte este artículo en tu red social:
No estaría mal poder ver ejemplos de cada uno, ni que sea en imágenes.
Suerte con el blog.
Gracias!
Si, quizás la idea de poner tantos trucos para Wordpress en un mismo artículo no haya sido una buena idea ya que impide detallarlos…
Hola, me parecen muy intereantes los trucos, mas me gustaría saber como mostrar en el post una información diferente que en el index, ej. en la portada se muestra una imagen y un resumen separado con el leer mas, bueno que cuando se acceda al post, dentro del post no se muestre la imagen y el resumen sino otra información diferente, en joomla es una opción que viene incluida por defecto pero en wordpress no se como hacerlo.
Un SAludo
Suerte
Gracias JuegosMaestros,
Si quieres que el resumen sea diferente del contenido del post tienes que escribir ese resumen dentro de la casilla Extracto. En el index en vez de the_content tienes que poner the_excerpt para que salga ese resumen:
En cuanto a poner una imagen que no esté dentro del artículo lo puedes hacer a través de los Campos Personalizados. Puedes crear un nuevo campo personalizado (llámalo por ejemplo “imagen”) y en “Valor” pon el nombre de la imagen (por ejemplo imagen.jpg). Actualiza el post y en el index pon para recuperar ese campo personalizado (fíjate como hay que poner el nombre del campo personalizado):
Los div, el width, la clase son opcionales y dependen de lo que quieras poner. Espero que te sirva. Si no te funciona por lo que sea dímelo!
Hola.
Perdón por mi ignorancia pero… ¿Cómo coloco un banner (o simplemente un enlace) que diga “Compartir este artículo en Delicious” o algo por el estilo, para que las personas puedan publicarlo en dicha página directamente desde mi blog?
Algo así como el que está al final de este artículo…
Muchas gracias de antemano, un saludo
Miss, éste es sensillo:
Miss, éste es sensillo: ttp://sharethis.com/