Question

Bon laissez-moi voir si je peux expliquer ce droit. En nous avons une wordpress case pour insérer un extrait. Nous devons ajouter une deuxième boîte de extrait. Au lieu d'ajouter manuellement un champ personnalisé à chaque poste, je l'ai placé une fonction pour ajouter automatiquement un champ personnalisé sous la forme d'une boîte Meta sur la page post admin.

Ok c'est donc le problème que je vais avoir cette fonction travaille à l'exception du fait que tout ce que vous entrez dans ce domaine, il perd son saut de ligne. Ainsi, lorsque nos écrivains sont contrubuting dans ce domaine afin de conserver la mise en forme du bloc de texte, je dois ajouter manuellement
à la fin du paragraphe.

Voici mon code:

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 );
}

Merci et toute aide serait faire.

Était-ce utile?

La solution 4

D'accord, j'ai trouvé une autre solution à mon problème. Merci Tatu pour obtenir mon Workin du cerveau. Pour ceux qui sont à la recherche d'une solution voici ce que je l'ai fait:

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

Autres conseils

Utilisez la fonction wpautop sur le modèle frontend. Comme:

<?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 } ?>

Il suffit d'ajouter cette ligne après $new_meta_value = ...:

$new_meta_value = nl2br($new_meta_value);

Et au lieu de comparer vos valeurs à '', il est préférable d'utiliser empty(). En outre, certaines des comparaisons sont inutiles. Ainsi, l'ajout / mise à jour / supprimer une partie de votre fonction de sauvegarde peut être écrit comme ceci:

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 );
}

Notez qu'il est toujours conseillé d'utiliser des accolades, même si votre déclaration est seulement une ligne longue. Il améliore la lisibilité et fait si / quand vous n'avez pas gâcher les choses à ajouter une autre ligne à la clause if.

Ne pas modifier les données enregistrées dans la base de données. Enregistrer exactement ce que l'utilisateur entre. modifier le contenu au lieu lorsque vous avez besoin pour l'afficher. De cette façon, lorsque l'utilisateur revient à modifier le champ de la modifier ce qu'ils mettent dans, pas ce que vous avez fait de leur contenu.

Utilisez wpautop pour faire la même traduction de votre texte que WordPress applique au contenu brut est entré dans le domaine post-contenu et de le faire lorsque le contenu est demandé pour l'affichage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top