Benim Wordpress özel Meta Box için nl2br ekleme

4 Cevap php

Tamam ben bu hakkı açıklamak bakayım. Wordpress biz bir alıntıyı eklemek için bir kutu var. Biz ikinci bir alıntı kutusu eklemek gerekir. Bunun yerine elle her yazı için özel bir alan ekleyerek otomatik olarak yönetici sonrası sayfadaki Meta kutusu şeklinde özel bir alan eklemek için bir işlevi vermiş.

Tamam bu yüzden bu ben bu fonksiyon kaybeder ne olursa olsun bu alana girmek o satır sonları olduğunu aslında haricinde çalışıyor yaşıyorum sorundur. Bizim yazarlar metin bloğunun biçimlendirmesini korumak için bu alana tesis edilmesine katkıda zaman Yani elle paragrafın sonuna
eklemek zorunda.

İşte benim kod:

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

Teşekkür ve herhangi bir yardım yapardı.

4 Cevap

Tamam benim sorununa başka bir çözüm bulduk. Beynim workin almak için size Tatu ederiz. Bir çözüm arayanlar için bu ben ne yaptım:

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

Hemen sonra bu satırı eklemek $new_meta_value = ...:

$new_meta_value = nl2br($new_meta_value);

Ve onun yerine kendi değerlerini karşılaştırarak '', kullanımı daha iyi empty(). Ayrıca karşılaştırmaların bazı gereksiz vardır. Böylece ekleme / güncelleme / senin kaydetmek işlevinin bir kısmını silmek, bu gibi yazılabilir:

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

Beyanı uzun tek bir satır bile her zaman kıvırcık parantez kullanmak tavsiye olduğunu unutmayın. Bu okunabilirliği artırır ve karışıklık şeyler yapar Eğer başka bir satır eklemek zorunda eğer / ne zaman fıkra eğer.

Önuç şablona işlevini wpautop kullanın. Gibi:

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

Veritabanına kaydedilen verileri değişiklik yapmayın. Kullanıcının girdiği tam olarak ne kaydedin. Bunu göstermek için gerektiğinde yerine içeriğini değiştirebilir. Kullanıcı field onlar ne koymak düzenlemek geri geldiğinde bu şekilde, onların içeriğinin ne yaptık değil.

wpautop WordPress sonrası içerik alanına girilen ham içerik için de geçerlidir metin üzerinde aynı çeviriyi yapmak ve içerik görüntüleme için talep edildiğinde bunu yapmak için kullanın.