Programación

Foro WordPress » WordPress » Programación

Ayuda: Extraer imagen de custom field de contenido múltiple (7 mensajes)

Acerca de este hilo

Tags

  1. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 1 año
    #

    Hola a todos, estoy realizado el diseño de una plantilla, esta tiene una integrado un form para publicación de contenido, el cual contiene un gestor de contenido de archivos e imagenes.
    En el caso de la imágenes él valor (en este caso la URL) es insertado en un único custom field, de la forma siguiente:
    http://www.dominio.com/url-imagen1.jpg, http://www.dominio.com/url-imagen2.jpg, http://www.dominio.com/url-imagen3.jpg, http://www.dominio.com/url-imagen4.jpg

    Las URL de las imágenes se separan mediante la siguiente función para luego ser insertadas:

    function image_box ($images) {
      $matches = explode(",", $images);
        foreach($matches as $var) {
            if ($var != "") {
                $thumb_var = str_replace(get_option('home')."/wp-content/uploads/images/", "", $var);
                $single_thumb_img_url = get_bloginfo('template_url')."/src/resize.php?url=".$var."&size=150x150c50";
                echo "<a href="$var" rel="lightbox"><img src="$single_thumb_img_url" /></a>"."\n";
            } else {
                if ( $matches[0] == "") {
                }
            }
        }
    }

    En el theme se muestran con la siguiente función:

    < ?php if(function_exists('image_box')) {image_box(get_post_meta($post- >ID, 'images', true)); } ? >

    La cual inserta todas las imágenes que se han cargado en el custom field images.

    El problema radica en lo siguiente:
    En el slider se muestra la primera imagen del post, la cual se extrae mediante una función para luego sr impresa:
    Función

    // Funcion para extraer imagen de artículo.
    function img($tamany = '') {
      if ( $images = get_children( array (
        'post_parent'    = > get_the_ID(),
        'post_type'      = > 'attachment',
        'numberposts'    = > 1,
        'post_mime_type' = > 'image'
       )));
      {
        if(!empty($images)) { //Solo añadí esta línea
            foreach( $images as $image ) {
              if($tamany == 'llistat_url') {
              $imagen = wp_get_attachment_image_src( $image- >ID, 'thumbnail' );
              echo $imagen[0];
              } if($tamany == 'destacat_url') {
              $imagen = wp_get_attachment_image_src( $image- >ID, 'medium' );
              echo $imagen[0];
              } if($tamany == 'portada_url') {
              $imagen = wp_get_attachment_image_src( $image- >ID, 'full' );
              echo $imagen[0];
              }
              if($tamany == 'llistat') {
              $imagen = wp_get_attachment_image( $image- >ID, 'thumbnail' );
              echo $imagen;
              } if($tamany == 'destacat') {
              $imagen = wp_get_attachment_image( $image- >ID, 'medium' );
              echo $imagen;
              } if($tamany == 'portada') {
              $imagen = wp_get_attachment_image( $image- >ID, 'full' );
              echo $imagen;
              }
            }
        } // y su respectivo cierre
      }
    }

    Se imprime con:

    <img />/scripts/resize.php?url=< ?php img($tamany = 'portada_url' )? >&amp;size=280x205c50" width="280" height="205" / >

    Pero el hecho es que no imprime las imágenes que se insertan mediante el custom field; supuestamente el siguiente código debería imprimir la primera del grupo de imágenes, pero no sucede nada,:

    [img src="< ?php echo get_bloginfo('template_url')."/scripts/resize.php?url=";? >< ?php
                                              if ( strstr($images, ',')) {
                                                $matches = explode("
    ,", $images);
                                                $img_single = $matches[0];
                                                $img_single = explode(trailingslashit(get_option('siteurl')) . "
    wp-content/uploads/images/", $img_single);
                                                echo $img_single[1];
                                              } else {
                                                $img_single2 = $images;
                                                echo $img_single2;
                                                    }? >&amp;size=180x205c50"
    width="180" height="205" /]

    Espero que me ayuden a solucionar esto, muchas gracias...

    La página donde pueden probar el form es http://www.redsaludcondorcanqui.com User: test pass: 123456

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)
  2. Pedro Raul

    5.0
    Antiguedad: Ene 2010
    Mensajes: 812

    offline

    Publicado hace 1 año
    #

    ¿cual slider?

    en el ultimo codigo que pones, llamas doblemente a la ruta de la carpeta donde esta la imagen.

    por que no mejor usas esto:

    < ?php if(function_exists('image_box')) {image_box(get_post_meta($post- >ID, 'images', true)); } ? >

    Wordpresslatino.net: ¡Se Brinda ayuda gratis para tu wordpress! -->- CLICK EN MI NICK
    ¡quieres que lo HAGA por ti! ---> CLICK EN MI NICK
  3. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 1 año
    #

    El hecho es que esa función imprime todas las imágenes que contiene el custom field, como indicaba, se está utilizando un solo custom field para almacenar la URL de varias imágenes cuyo delimitador es ",", además, la imagen que se muestra en el slider, tiene un tamaño diferente al que se inserta en el post.

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)
  4. Pedro Raul

    5.0
    Antiguedad: Ene 2010
    Mensajes: 812

    offline

    Publicado hace 1 año
    #

    si para ello esta la funcion image_box ()

    Wordpresslatino.net: ¡Se Brinda ayuda gratis para tu wordpress! -->- CLICK EN MI NICK
    ¡quieres que lo HAGA por ti! ---> CLICK EN MI NICK
  5. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 1 año
    #

    Que tal Pedro, entiendo a lo que te refieres, pero algo sucede.

    Anteriormente mencionaba que para mostrar la imagen en el slider, utilizaba una función para extraer la primera imagen; y la mostraba con.
    /scripts/resize.php?url=<?php img($tamany = 'portada_url' )?>&size=280x205c50" width="280" height="205" />

    Ahora, en el single.php yo muestro las imágenes del custom field $images con:
    <?php if(function_exists('image_box')) {image_box(get_post_meta($post->ID, 'images', true)); } ?>, la cual muestra "todas" las imágenes de ese custom field.

    Ahora si yo utilizo ese código para intentar mostrar al menos una de las imágenes en el slider, solo carga un espacio en blanco o no muestra nada; cabe recordar que la función image_box, aplica un formato específico a las imágenes que se mostrarán en el single, como tamaño, borde, padding, margin, etc.

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)
  6. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 1 año
    #

    Bueno, estuve probando para encontrar soluciones y el código siguiente es el que funciona:

    [img src="< ?php echo get_bloginfo('template_url')."/src/resize.php?url=";? >< ?php bloginfo('url')? >/wp-content/uploads/images/< ?php
            if ( strstr($images, ',')) {
            $matches = explode("
    ,", $images);
            $img_single = $matches[0];
            $img_single = explode(trailingslashit(get_option('siteurl')) . "
    wp-content/uploads/images/", $img_single);
            echo $img_single[1];
            } else {
            $img_single2 = $images;
            echo $img_single2;
            }? >&amp;size=280x205c50"
    width="280" height="205" alt="< ?php the_title(); ? >" /]


    Pero nota además que después de la función para cargar el resizer, he tenido que agregar: <?php bloginfo('url')?>/wp-content/uploads/images/ ya que la función siguiente sólo carga el nombre de archivo de imagen y no la ruta completa.

    Bien, ahora necesito realizar lo siguiente:

    Si el campo $images está vacio, hay que cargar la primera imagen que contenga el artículo y si no está vacio, que llame la función anterior, pero si no hay ni imagen en post o en el custom field no se cargue nada.

    Para lo primero ya está, lo estoy haciendo de la siguiente manera:

    < ?php $images = get_post_meta($post- >ID, "images", true); if (empty($images)) {? > //Si el campo $images esta vacio muestre lo siguiente
        [img src="< ?php bloginfo('template_url'); ? >/src/resizer.php?url=< ?php echo img($tamany = 'portada_url'); ? >&amp;size=280x205c50" width="280" height="205" alt="< ?php the_title(); ? >" /]
    < ?php } else { ? > //Si el campo $images tiene valores cargar lo siguiente
        [img src="< ?php echo get_bloginfo('template_url')."/src/resize.php?url=";? >< ?php bloginfo('url')? >/wp-content/uploads/images/< ?php
            if ( strstr($images, ',')) {
            $matches = explode("
    ,", $images);
            $img_single = $matches[0];
            $img_single = explode(trailingslashit(get_option('siteurl')) . "
    wp-content/uploads/images/", $img_single);
            echo $img_single[1];
            } else {
            $img_single2 = $images;
            echo $img_single2;
            }? >&amp;size=280x205c50"
    width="280" height="205" alt="< ?php the_title(); ? >" /]
    < ?php } ? >


    Que sucede si no hay imagenes en el post o en el campo personalizado, simplemente está mostrando un recuadro con una X como si la imagen no cargara correctamente.

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)
  7. fliberty

    5.0
    Antiguedad: Oct 2009
    Mensajes: 1.511

    offline

    Publicado hace 1 año
    #

    Supongo que tendré que especificar a mi cliente que será absolutamente necesario que todos los artículos tengan al menos una imagen.

    Visítenme:
    http://www.contigoperu.com.pe (hosting/dominios) | http://www.pachakamaq.com (temática variada) | http://www.mipycs.com (image hosting gratuito) | http://www.contigoperusemanario.org(noticias) | http://www.contigoperuclasificados.com (clasificados gratis) | http://www.cyberdocentes.com (recursos educativos)

Responder

Debes Identificarte para publicar.

Foro WordPress » WordPress » Programación