Wordpress - Múltiples imágenes por publicación

Buscando cualquier punteros realmente.

La funcionalidad que busco

Básicamente, me gustaría tener la funcionalidad para asignar hasta 6 imágenes diferentes a una sola publicación. Las 6 imágenes se mostrarán normalmente dentro de single.php. En la página de inicio, por ejemplo, me gustaría que una de esas imágenes se muestre aleatoriamente en la carga de la página para esa publicación.

Un par de preguntas

  1. ¿Esto es posible?
  2. ¿Hay algún plugin que pueda gestionar este tipo de cosas?
  3. Si tuviera que hacerlo yo mismo, ¿cómo debería crear este tipo de funcionalidad?

preguntado el 22 de mayo de 12 a las 19:05

Este complemento puede hacer el trabajo wordpress.org/plugins/multi-image-upload -

2 Respuestas

Sí es posible, y no tan difícil. Subes las imágenes al crear la publicación.

Luego, en single.php, usa get_children para obtener todas las imágenes de la publicación.

suponiendo en el bucle:

$images =& get_children( 'post_type=attachment&post_mime_type=image&post_parent=$post->ID' );

y mostrarlos así:

if ($images)
{
foreach ( $images as $attachment_id => $attachment ) {
        echo wp_get_attachment_image( $attachment_id, 'full' );
    }
}

Para su imagen aleatoria, puede usar los mismos get_children que arriba pero agregar &numberposts=1 a la cadena de argumentos.

o algo como:

 function fetch_random_img($postid='') {
    global $wpdb;
    if (empty($postid))
    {
       //we are going for random post and random image
     $postid = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY RAND() LIMIT 1");
    }
    $imageid = $wpdb->get_var($wpdb->prepare("SELECT ID FROM wp_posts WHERE post_type='attachment' AND post_mime_type LIKE 'image/%' AND post_parent=$postid ORDER BY RAND() LIMIT 1"));
    if ($imageid) {
         echo wp_get_attachment_image( $imageid, 'full' );
    }
    else {
    return false;
    }

    }

Esto le dará solo una imagen aleatoria, y será aleatoria, mientras que get_children extraerá la misma imagen cada vez a menos que agregue los argumentos order y orderby, lo que le permitirá cambiar qué imagen sale.

Para hacer eco de la imagen dentro de un div, simplemente llame a la función:

<div>
<?php fetch_random_img(); ?>
</div>

Respondido 01 Oct 12, 21:10

¿Algo salió mal en la línea que dice ''post_type=attacenter code herecomentario&p'? ¿No se ve bien? Además, cuando los genera usando su código, ¿qué está haciendo exactamente ese fragmento de código? ¿Es eso para mostrar las 6 imágenes dentro de single.php o es para mostrar una publicación aleatoria, por ejemplo, en index.php? - egr103

Sí, sucedió cuando hice clic en los corchetes para poner el código en un bloque de código, ya lo saqué en un lugar. De todos modos, ordenado ahora. - liam bailey

Entonces, ¿su código bombeará las 6 imágenes dentro de single.php? Entonces, ¿simplemente subo mis imágenes y las inserto en la publicación como de costumbre? Perdone las preguntas, simplemente no confíe en PHP. - egr103

No. Cargas las imágenes normalmente cuando agregas la publicación, pero no las insertas en el contenido de la publicación. Simplemente presione guardar y luego publique. El código es lo que muestra las imágenes en single.php. Oh, lo olvidé. Acerca de la visualización aleatoria en la carga de la página, en qué página se carga, la página de publicación única u otra, y ¿dónde/cómo debería mostrarse la imagen al azar? - liam bailey

Bueno, la funcionalidad de imagen aleatoria es realmente para otras plantillas de página/publicación y NO para single.php. En single.php quiero bombear todas las imágenes cargadas. En otras plantillas, querré llamar solo una de las muchas imágenes cargadas. - egr103

Para cada publicación, agregue un campo personalizado con un nombre y un valor. Puede tener el nombre como ImageURL1 y el valor puede ser la URL de la imagen. Agregue tantos campos personalizados a la publicación como desee. Ejemplo:

enter image description here

Imprímelo en tu single.php o en cualquier otro archivo dentro del ciclo usando este código:

<?php $values = get_post_custom_values("ImageURL"); echo $values[0]; ?>

Para cargarlo en la página de inicio, consultaría la publicación y luego obtendría el valor del campo personalizado para un nombre específico dentro de su index.php:

<?php query_posts('cat=10')  //your cat id here ?>
<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
<a href="<?php $values = get_post_custom_values("LinkURL"); echo $values[0]; ?>" target="_blank"><img src="<?php $values = get_post_custom_values("ImageURL"); echo $values[0]; ?>" alt="<?php the_title(); ?>" /></a>
<?php endwhile; ?><?php endif; ?>
<?php wp_reset_query(); ?>

Puede aleatorizarlo o recorrer los campos personalizados si lo desea.

contestado el 22 de mayo de 12 a las 20:05

No hay absolutamente ninguna necesidad de usar valores de publicación personalizados para esto: liam bailey

Gracias por la entrada sin embargo :) - egr103

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.