Pregunta

Bien déjame ver si puedo explicar este derecho. En wordpress tenemos una caja para insertar un extracto. Tenemos que añadir una segunda caja extracto. En lugar de añadir manualmente un campo personalizado a todos los envíos que he colocado una función para añadir automáticamente un campo personalizado en la forma de una caja de Meta en la página de administración de correos.

Bueno por lo que este es el problema que estoy teniendo esta función está trabajando excepto por el hecho de que todo lo que entra en este campo que pierde su saltos de línea. Así que cuando nuestros escritores se contrubuting a este campo con el fin de mantener el formato del bloque de texto que tengo que añadir manualmente
al final del párrafo.

Aquí está mi código:

function my_create_post_meta_box() {
    add_meta_box( 'my-meta-box', 'Second Excerpt', 'my_post_meta_box', 'post', 'normal', 'high' );
}

function my_post_meta_box( $object, $box ) { ?>
<p>
    <label for="second-excerpt">
        <strong>Second Excerpt With Images for Post List Page</strong>
    </label>
    <textarea name="second-excerpt" id="second-excerpt" cols="60" rows="4" tabindex="30" style="width: 97%;" wrap="hard"><?php echo wp_specialchars( get_post_meta( $object->ID, 'Second Excerpt', true ), 1 ); ?></textarea>
    <input type="hidden" name="my_meta_box_nonce" value="<?php echo wp_create_nonce( plugin_basename( __FILE__ ) ); ?>" />
</p>
<?php
}

function my_save_post_meta_box( $post_id, $post ) {

    if ( !wp_verify_nonce( $_POST['my_meta_box_nonce'], plugin_basename( __FILE__ ) ) )
        return $post_id;

    if ( !current_user_can( 'edit_post', $post_id ) )
        return $post_id;

    $meta_value = get_post_meta( $post_id, 'Second Excerpt', true );
    $new_meta_value = stripslashes( $_POST['second-excerpt'] );

    if ( $new_meta_value && '' == $meta_value )
        add_post_meta( $post_id, 'Second Excerpt', $new_meta_value, true );

    elseif ( $new_meta_value != $meta_value )
        update_post_meta( $post_id, 'Second Excerpt', $new_meta_value );

    elseif ( '' == $new_meta_value && $meta_value )
        delete_post_meta( $post_id, 'Second Excerpt', $meta_value );
}

Gracias y cualquier ayuda sería hacer.

¿Fue útil?

Solución 4

Está bien que he encontrado otra solución a mi problema. Gracias Tatu para conseguir mi Workin cerebro. Para aquellos que están buscando una solución de esto es lo que hice:

$new_meta_value = "<p>" . implode( "</p>\n\n<p>", preg_split( '/\n(?:\s*\n)+/', $new_meta_value ) ) . "</p>";

Otros consejos

Utilice wpautop función de plantilla de interfaz. Como:

<?php $yourvalue =  get_post_meta($post->ID, "yourvalue", true);   
  if ($yourvalue != ""){ ?>
   <dt>Consult&oacute;rio:</dt>
   <dd><?php echo wpautop( $consultorio, $br = 1 ); ?></dd>
<?php } ?>

Sólo tiene que añadir esta línea después de $new_meta_value = ...:

$new_meta_value = nl2br($new_meta_value);

Y en lugar de comparar sus valores a '', es mejor utilizar empty(). Además, algunas de las comparaciones son innecesarios. Por lo tanto, el complemento / actualizar / borrar parte de su función de ahorro se puede escribir así:

if(empty($meta_value)) {
    add_post_meta( $post_id, 'Second Excerpt', $new_meta_value, true );
} elseif(empty($new_meta_value)) {
    delete_post_meta( $post_id, 'Second Excerpt', $meta_value );
} else {
    update_post_meta( $post_id, 'Second Excerpt', $new_meta_value );
}

Tenga en cuenta que siempre es aconsejable el uso de llaves incluso si su declaración es sólo una fila larga. Que mejora la legibilidad y no complicar las cosas si / cuando se tiene que añadir otra fila a la cláusula if.

No modifique los datos guardados en la base de datos. Guardar exactamente lo que entra en el usuario. En lugar de modificar el contenido cuando se necesita para que aparezca. De esta manera, cuando el usuario vuelve a editar el campo de la edición de lo que ponen en, no lo que hemos hecho de su contenido.

Utilice wpautop hacer la misma traducción en el texto que WordPress está relacionada con el contenido prima introducida en el campo post-contenido y hacerlo cuando se solicita el contenido de la pantalla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top