문제

좋아, 내가이 권리를 설명 할 수 있는지 보자. WordPress에는 발췌문을 삽입하는 상자가 있습니다. 두 번째 발췌 상자를 추가해야합니다. 모든 게시물에 사용자 정의 필드를 수동으로 추가하는 대신 관리자 게시물 페이지의 메타 상자 형태로 사용자 정의 필드를 자동으로 추가하는 기능을 배치했습니다.

좋아, 이것은 내가이 기능이 작동하는 문제입니다.이 필드에 들어가는 것이 무엇이든 줄을 잃는다는 사실을 제외하고는이 기능이 작동합니다. 그래서 우리 작가들이 텍스트 블록의 형식을 유지하기 위해이 필드에 반박 할 때 나는 수동으로 추가해야합니다.
단락의 끝까지.

내 코드는 다음과 같습니다.

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

감사하고 도움이 될 것입니다.

도움이 되었습니까?

해결책 4

좋아, 내 문제에 대한 또 다른 해결책을 찾았습니다. 내 뇌가 일하게 해주신 Tatu에게 감사합니다. 솔루션을 찾고있는 사람들에게는 이것이 내가 한 일입니다.

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

다른 팁

프론트 엔드 템플릿에서 WPAUPOP 함수를 사용하십시오. 처럼:

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

후에이 줄을 추가하십시오 $new_meta_value = ...:

$new_meta_value = nl2br($new_meta_value);

그리고 당신의 가치를 비교하는 대신 '', 사용하는 것이 좋습니다 empty(). 또한 일부 비교는 불필요합니다. 따라서 저장 기능의 추가/업데이트/삭제 부분은 다음과 같이 작성할 수 있습니다.

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

당신의 진술이 한 줄 길이라도 곱슬 괄호를 사용하는 것이 항상 권장됩니다. 가독성이 향상되고 IF 절에 다른 행을 추가해야 할 때 문제를 해결하지 않습니다.

데이터베이스에 저장된 데이터를 수정하지 마십시오. 사용자가 입력 한 것을 정확하게 저장하십시오. 대신 컨텐츠를 표시해야 할 때 컨텐츠를 수정하십시오. 이런 식으로 사용자가 다시 필드를 편집하여 자신의 컨텐츠로 만든 내용이 아니라 입력 한 내용을 편집합니다.

사용 wpautop 텍스트에서 WordPress가 컨텐츠 이후 필드에 입력 된 원시 콘텐츠에 적용되는 텍스트에서 동일한 번역을 수행하고 콘텐츠가 표시를 요청할 때 수행합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top