:

Snippets WordPress

WPML tag condicional para idiomas

wpml_logo

Snippet para WPML para mostrar contenido diferente según idioma.

<?php if (strstr($_SERVER["REQUEST_URI"], '/es/') ) { ?>
             ...
  <?php } else { ?>
              ...
<?php } ?>

Para mostrar cada idioma por ejemplo, /en/ o ?lang=es, dependiendo de la configuración.

Foto destacada por defecto por categorías WordPress

Últimamente la cosa va snippets en WordPress y debido a que estoy desarrollando varias webs y postear aquí los snippets a parte de compartirlos con vosotros me sirve como archivo :)

El snippet de hoy es un función que nos devuelve una foto por defecto en el post en base a la categoría. Es decir si no hemos asignado una foto destacada al post, mostraremos una foto por defecto según la categoría.

Lo que hacemos es nombrar la imagen con el ID de la categoria y la guardamos en la carpeta imagenes del theme.

<img src="<?php bloginfo('template_directory'); ?>/images/<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>.jpg" />

El snippets final es:

<?php if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())) : ?>

<?php the_post_thumbnail('thumbnail'); ?>

<?php else :? >

<img src="<?php bloginfo('template_directory'); ?>/images/<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>.jpg" /> 

<?php endif;?>

Sencillo eh! :)

Get attachment WordPress

Captura de pantalla 2012-02-05 a la(s) 09.27.55

Una de las funciones de WordPress es devolver cualquier archivo adjunto a un post. Está función puede ser útil para crear una zona de descargas, o bien añadir todos los archivos adjuntos de post listos para ser descargados.

Aquí va el código

<?php
        $args = array(
          'post_type' => 'attachment',
          'post_mime_type' => 'image',
          'numberposts' => -1,
          'post_status' => null,
          'post_parent' => $post->ID,
          'orderby' => 'menu_order',
          'order' => 'desc'
          );
        $attachments = get_posts($args);
        if ($attachments) {
          foreach ($attachments as $attachment) {
            echo '<li><a href="'.wp_get_attachment_url($attachment->ID).'">';
            echo '   Descargar '.$attachment->post_title;'</a></li>';
          }
        }
    ?>

En post_mime_type es donde declaramos el tipo de archivo de queremos en este caso es un imagen. Pero podrías solicitar cualquier tipo de archivo de esta manera:

'post_mime_type' => 'application/pdf,application/msword',

Tipo de archivos

  • Word Documents = application/msword
  • PDF = application/pdf
  • PowerPoint = application/vnd.ms-powerpoint
  • Excel = application/vnd.ms-excel
  • Zip = application/zip
  • Audio files = audio/mpeg

Custom metabox para imagenes

Captura de pantalla 2011-10-22 a las 13.43.45

Para un proyecto nuevo, necesitaba la forma de tener un lista de todas las imágenes subidas al WordPress para seleccionar la que queria. La idea es subir un pack de imágenes y luego ir escribiendo los post.

Después de Googlear un poco encontré la solución, sólo había que modificar un poco el código para conseguir un menú desplegable debajo del editor de texto donde listará todas las imágenes subidas.

La solución empleada es lo que se llama Meta Box, que es un “bloque” nuevo que se puede añadir a la sección de edición de páginas/post en la pantalla de admistración de WordPress.

Poner el siguiente código en functions.php

add_action("admin_init", "images_init");
add_action('save_post', 'save_images_link');
function images_init(){
	add_meta_box("dibujos-images", "Elegir imagen", "images_link", "post", "normal", "low");
	}
function images_link(){
	global $post;
	$custom  = get_post_custom($post->ID);
	$link    = $custom["link"][0];
	$count   = 0;
	echo '<div class="link_header">';
	$query_images_args = array(
		'post_type' => 'attachment',
		'post_mime_type' =>'image',
		'post_status' => 'inherit',
		'posts_per_page' => -1,
		);
	$query_images = new WP_Query( $query_images_args );
	$images = array();
	echo '<select name="link">';
	echo '<option class="images_select">SELECIONA LA IMAGEN</option>';
	foreach ( $query_images->posts as $file) {
	   if($link == $images[]= $file->guid){
	      echo '<option value="'.$images[]= $file->guid.'" selected="true">'.$images[]= $file->guid.'</option>';
		 }else{
	      echo '<option value="'.$images[]= $file->guid.'">'.$images[]= $file->guid.'</option>';
		 }
		$count++;
	}
	echo '</select><br /></div>';
	echo '<p>Seleciona la imagen de la lista para adjuntarla al post.</p>';
	echo '<div class="images_count"><span>Archivos:</span> <b>'.$count.'</b></div>';
}
function save_images_link(){
	global $post;
	if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; }
	update_post_meta($post->ID, "link", $_POST["link"]);
}
add_action( 'admin_head', 'images_css' );
function images_css() {
	echo '<style type="text/css">
	.images_select{
		font-weight:bold;
		background:#e5e5e5;
		}
	.images_count{
		font-size:9px;
		color:#0066ff;
		text-transform:uppercase;
		background:#f3f3f3;
		border-top:solid 1px #e5e5e5;
		padding:6px 6px 6px 12px;
		margin:0px -6px -8px -6px;
		-moz-border-radius:0px 0px 6px 6px;
		-webkit-border-radius:0px 0px 6px 6px;
		border-radius:0px 0px 6px 6px;
		}
	.images_count span{color:#666;}
		</style>';
}
function images_file_url(){
	global $wp_query;
	$custom = get_post_custom($wp_query->post->ID);
	echo '<a href="'.$custom['link'][0].'"><img src="'.$custom['link'][0].'" /></a>';
}

Os quedará algo así:

Imagenes custom metabox

Imagenes custom metabox

Para pintar la imágen insertada colocar este fragmento de código donde queraís que se vea

<?php images_file_url() ?>

Esto mismo se puede hacer con otro tipo de archivos, musica, videos, pdf etc….