• Hola, me ha surgido una necesidad que no sé muy bien como afrontar.

    Necesito que cuando añada una nueva entrada, esta aparezca con un contenido prediseñado (en realidad unos shortcodes ya escritos).
    ¿Es esto posible? y si es así ¿cómo?

    Un saludo y gracias.

Viendo 8 respuestas - de la 1 a la 8 (de un total de 8)
  • Moderador LGrusin

    (@lgrusin)

    En el código del shortcode pueden ir estilos CSS. Incluso a algunos les puedes pasar parámetros como por ejemplo el shortcode caption
    https://codex.wordpress.org/Caption_Shortcode

    No sé si te refieres a eso.

    Un saludo

    • Esta respuesta fue modificada hace 6 años, 2 meses por LGrusin.
    • Esta respuesta fue modificada hace 6 años, 2 meses por LGrusin.
    Iniciador del debate Pablo Moratinos

    (@pablo-moratinos)

    Hola, gracias por contestar.
    No me refiero a eso, no me he explicado bien.

    Me refiero a que al crear una entrada nueva ya venga con un cierto texto escrito (esos shortcodes) desde el principio. La idea es que el redactor disponga de una estructura de shortcodes en un primer momento y continue escribiendo la entrada.

    Iniciador del debate Pablo Moratinos

    (@pablo-moratinos)

    Parece que puede funcionar algo tipo:

    add_filter( 'default_content', 'my_default_content' );
    function my_default_content( $content ) {
       $content = "AQUI VA EL CONTENIDO POR DEFECTO";
     return $content;
    }
    Iniciador del debate Pablo Moratinos

    (@pablo-moratinos)

    He creado un plugin con un formulario para añadir el texto que se desee a a todas las futuras entradas mediante el filtro anterior pero me encuentro atascado porque el formulario no acepta html para que envíe ese valor a la función…

    Iniciador del debate Pablo Moratinos

    (@pablo-moratinos)

    Ya lo tengo 🙂
    Con el hook the_editor_content puedo añadir lo que recoja en el formulario directamente a la entrada en la pestaña HTML.
    Creo que intentaré publicar un plugin por si a alguien más le interesa.

    Moderador LGrusin

    (@lgrusin)

    Entiendo…

    Pero, ¿para qué necesitas el formulario? ¿El shortcode es distinto para cada entrada?

    Si todas las entradas llevan el mismo texto o shortcode predefinidos, ¿no te vale algo así?:

    function insertar_contenido($content) {
    $content = '[shortcode]'.$content;
    return $content;
    }
    add_filter( 'the_content', 'insertar_contenido');

    A lo anterior habría que añadirle una condición para que lo muestre solo en los posts y no en páginas y demás:

    function insertar_contenido($content) {
    global $post;
    if ($post->post_type == 'post') {
    $content = '[shortcode]'.$content; }
    return $content;
    }
    add_filter( 'the_content', 'insertar_contenido');

    Un saludo

    • Esta respuesta fue modificada hace 6 años, 2 meses por LGrusin.
    Iniciador del debate Pablo Moratinos

    (@pablo-moratinos)

    mmmm si, me vale igual. Lo que pasa es que quería aprovechar para hacerlo mediante una opción en el Escritorio que me permitiera cambiar rápidamente el contenido predefinido sin tener que entrar al código.

    Me acabo de dar cuenta de que necesito añadir otra condición para que al editar un post de borrador o publicado no se añada el prediseñado sino que se mantenga el suyo propio. ¿Alguna idea?

    Iniciador del debate Pablo Moratinos

    (@pablo-moratinos)

    creo que con
    if (get_post_status ( $ID ) == 'auto-draft')
    me valdría.

    Por lo menos parece que funciona. Voy a testearlo un rato a ver si salta algo raro.

Viendo 8 respuestas - de la 1 a la 8 (de un total de 8)
  • El debate ‘Entradas con contenido prediseñado’ está cerrado a nuevas respuestas.