Shortcodes dentro de custom fields y otras dudas.

Inicio Foros WordPress Programación Shortcodes dentro de custom fields y otras dudas.

Este debate contiene 17 respuestas, tiene 3 mensajes y lo actualizó  imported_fliberty hace 6 años, 8 meses.

  • Autor
    Publicaciones
  • #23390

    imported_fliberty
    Participante

    <p>Hola a todos, como saben he publicado una nueva página: http://www.cyberdocentes.com, la cual integra un formulario de publicación desde el front-end, donde el text-area para el contenido del artículo es un custom field "description", lo cual no se carga/muestra dentro del the_content o the_excerpt si no, haciendo la llamada respectiva del custom field.<br />
    Este campo personalizado actúa como si fuese el campo de contenido, acepta formato o código html; sin embargo como el contenido del blog es educativa, dentro de su temática se encuentran los recursos educativos para diseño web, y quiero publicar algunas funciones, por lo que es necesario instalar un plugin como el google syntax o parecido y la verdad no he realizado el intento por colocar el shortcode dentro del campo personalizado, pero en teoría debería funcionar, no lo creen.</p>
    <p>Uno de los problemas de utilizar el custom field como campo de contenido para las entradas, no existe contenido RSS que mostrar, si hago un reconteo de caracteres para mostrar algo como the_excerpt, pero con formato, hay un punto donde las etiquetas html se corten y se combinen con las etiquetas del diseño en general, lo que ocasiona que el diseño se distorsione; hay alguna función, o posibilidad de crear una función que además de contar las palabras elimine las etiquetas o html de esta porción de contenido y lo muestre sin html.</p>
    <p>Para el feed ya lo tengo solucionado, ya que cuento con una función para mostrar custom fields en el RSS.
    </p>

  • #57937

    almendron
    Participante

    Prueba con “strip_tags” que elimina las etiquetas HTML. Si te funciona, le das las gracias a LGrusin que fue quien lo explico en una consulta anterior.

  • #57938

    imported_fliberty
    Participante

    Almendron muchas gracias por la respuesta, pero tendrás el enlace de esa consulta, ya que no encuentro en la búsqueda algo que me sirva.

  • #57941

    almendron
    Participante

    La consulta no tenía nada que ver con la tuya, pero Grusin puso ese código para que la función no devolviera las etiquetas HTML:

    <?php if (is_category()) { ?>
    <meta name="description" content="<?php echo strip_tags(category_description()); ?>" />
    <?php } ?>

    Y para evita el salto de línea final:

    <?php echo trim(strip_tags(category_description())); ?>

    Manual de PHP

    http://php.net/manual/es/function.strip-tags.php

  • #57943

    imported_fliberty
    Participante

    La función que utilizo es esta:

    Sin embargo, colocando el strip_tags en la posición que fuere, me devuelve contenido duplicado. Ahora estoy haciendo pruebas, luego también continúo con lo de la inclusión de shortcodes dentro del custom fields.

  • #57944

    almendron
    Participante

    Pero ¿qué función es la que te devuelve etiquetas HTML?

  • #57945

    imported_fliberty
    Participante

    Esa misma, digamos que el uso normal del custom field es esto:

    Si colo el custom field de esta forma, se mostrará todo el contenido del custom field, y digamos que este custom field se utiliza en lugar del the_content, y en portada no quiero mostrar todo el contenido, si no un extracto, para ello, muestro el custom field de esta forma:

    Se tendría que modificar esto: rtrim(substr($value,0,$trim_length)) para que además de imprimir quite el html del valor del custom field.

  • #57947

    almendron
    Participante

    ¿get_post_meta te devuelve etiquetas HTML?

    Si es así, prueba a

    $value = strip_tags(get_post_meta($post- >ID, $custom_field, true);'));

    Luego pon “echo $value” para ver que es lo que devuelve.

  • #57948

    imported_fliberty
    Participante

    Si, eso he realizado, pero no me funcionaba por que lo estaba colocando de esta manera: $value = strip_tags(get_post_meta($post- >ID, $custom_field, true);’),’
    <p>’);

    Lo dejé sin las etiquetas permitidas, y sin embargo, algunas entradas más abajo, estas aún muestran texto en negrita a excepción de las primeras, que muestran el formato una vez se accede a la entrada.

  • #57950

    LGrusin
    Miembro

    La verdad es que no he entendido bien el sentido que le quieres dar. ¿Necesitas HTML o no?

    Pregunto, ¿No podías haber aprovechado el excerpt manual? Te ahorras custom field, eliminas HTML y sale en el Feed.

    Sólo tendrías que modificar la plantilla para mostrar el content y el excerpt en caso de que exista.

    Supongo que querías algo más elaborado.

    Un saludo

  • #57951

    imported_fliberty
    Participante

    Que tal LGrusin, el problema es que estoy utilizando un formulario para que los usuarios publiquen sus artículos desde el front-end, estaba integrando un text-area cuyo contenido se publique como the_content, sin embargo al parecer hacia conflicto con alguna función que no logré arreglar y tuve que utilizar un custom field para publicar el contenido.

    Ahora en el home utilizo dos funciones, el the_excerpt para publicaciones que pueda hacer desde la administración y la función antes mencionada para mostrar el extracto de las publicaciones hechas desde el front-end con el custom field.

    Normalmente si cargo la página directamente, no se ve el cambio en la función que hace que no se muestre el html, sin embargo si dentro de la página, presiono el enlace al Muro, se muestra el cambio.

    Se puede decir que esta parte ya está solucionada, ahora estoy haciendo los extractos para mostrar el feed. Tengo lo siguiente:

    Sin embargo como el formulario de agregar soporta la subida de multiples imagenes con un separador “,” tengo problemas al modificar la función.
    Vengo trabajando la siguiente función para mostrar la imagen:

    sin embargo me arroja el error: error, unexpected T_IF in…. en la segunda línea:
    if (strstr($images, ‘,’)){
    del cual no encuentro solución.

  • #57952

    LGrusin
    Miembro

    fliberty no se ven bien los códigos así. Debes usar comillas invertidas `

    Saludos

  • #57955

    imported_fliberty
    Participante

    Como que no soluciono el problema.

  • #57962

    imported_fliberty
    Participante

    Bueno sali un momento, pero aún no soluciono mi problema; por ahora la función está así:

    Sigue el problema: syntax error, unexpected T_IF en la línea:
    if(strstr($images,’,’)){

    Al parecer todo está bien, ya que es la misma función que utilizo para mostrar las imágenes en el home.

  • #57971

    LGrusin
    Miembro

    fliberty de la manera que pones el código no se muestra correctamente en el Foro.

    Puesto que no sale bien es imposible detectar un error. O escriben los códigos entre comillas invertidas como he dicho en infinidad de ocasiones o no hay nada que hacer.

    Ejemplo:

    Aunque no se vea en pantalla el segundo código sale completo y puede copiarse y pegarse perfectamente. Además el primer código no sólo no se muestra correctamente sino que desaparece del cuadro de edición, con lo que queda totalmente destrozado.

    Un saludo

  • #57978

    imported_fliberty
    Participante

    Haber digamos que la función que utilizo para extraer la URL de la imagen, excluyendo el divider “,” es la siguiente:
    [quote]
    <?php $images = get_post_meta($post->ID, “images”, true); if (empty($images)) { ?><?php } else{?><?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;
    }?><?php }?>[/quote]

    Y la función que utilizo para mostrar custom fields en el feed es la siguiente:
    [quote]
    function cyberdocentes_feed($content) {
    global $post, $images, $description;
    $images = get_post_meta($post->ID, “images”, $single = true);
    $description = get_post_meta($post->ID, “description”, $single = true);
    if($images !==){
    $contenido = <div style=”text-align: justify”>
    .$description.<br />
    .$content.
    </div>
    ;
    }
    else {
    return $contenido;
    }
    }
    add_filter(the_excerpt_rss, cyberdocentes_feed);
    add_filter(the_content_feed, cyberdocentes_feed);[/quote]

    Actualmente solo muestra el custom field del text area “description”, ya que la función para mostrar la imagen no resulta, y si coloco sólo si hay una sola imagen se muestra la url incluido el divider: “http://www.dominio.com/wp-content/uploads/images/imagen.jpg,” y lógicamente la imagen no se mostrará.

    En cuanto a la utilización de shortcodes dentro de los campos personalizados, en este caso el campo “description”, lo hice de la siguiente manera:
    [quote]<?php if (get_post_meta($post->ID, ‘description’, true)) echo do_shortcode(get_post_meta($post->ID, ‘description’, $single = true)); if (empty($description)){ ?>
    <?php } else { ?>
    <?php echo $description; ?>
    <?php } ?>[/quote]

    Como saben la función do_shortcode nos permite mostrar un shortcode en diferentes partes del theme, sólo hay que saber donde configurarlo.

  • #57980

    LGrusin
    Miembro

    Lo que has puesto es lo mismo que:

    Pues ahora que está más ordenado se puede ver algo… 😉

    ¿get_post_meta devuelve la URL de la imagen o sólo el archivo de imagen?

    La función strstr muestra después de la coincidencia. Es decir, strstr($images, ‘,’) muestra a partir de la coma en adelante. En caso de que haya dos nombres de imágenes separados por coma sólo cogería la segunda.

    si pones blog_info te muestra todas las imágenes que haya en /wp-content/uploads/images/ no entiendo el sentido de esa parte.

    Modifica esto y seguimos…

    Un saludo

  • #57981

    imported_fliberty
    Participante

    Bueno, hice algunas modificaciones a la función de subida de imágenes y a la función que muestra las imágenes subidas. Ahora ya se ve la imagen en el feed.

El foro ‘Programación’ está cerrado y no se permiten nuevos debates ni respuestas.

Pin It on Pinterest