WordPress - 줄 바꿈 없이 텍스트 영역에서 여러 줄 텍스트를 삭제하는 방법
이렇게 사용자가 입력한 메타 텍스트('메시지'라고 함)를 삭제하고 저장하면...
update_post_meta($post_id, 'message', sanitize_text_field($_POST['message']));
...이렇게 텍스트를 검색하여 다시 표시하려고 합니다...
echo '<textarea id="message" name="message">' . esc_textarea( get_post_meta( $post->ID, 'message', true ) ) . '</textarea>';
모든 줄 끊기기가 사라진다
WordPress 코덱스에 따라 줄 바꿈은 sanitize_text_field() 함수에 의해 삭제됩니다.그러면 사용자가 입력한 텍스트를 줄 바꿈 없이 삭제할 수 있는 방법은 무엇일까요?
Wordpress 4.7.0 이후
sanitize_text_field 대신 sanitize_textarea_field를 사용합니다.
보다 우아한 솔루션:
update_post_meta(
$post_id,
'message',
implode( "\n", array_map( 'sanitize_textarea_field', explode( "\n", $_POST['message'] ) ) )
);
사용하다sanitize_text_field
텍스트 필드를 삭제할 경우 선택합니다.
줄 바꿈이 유일한 것이라면sanitize_text_field
당신이 갖고 싶은 것을 지우는 것입니다.str_replace
위해서"\n"
전화하기 전과 후에sanitize_text_field
.
$fake_newline = '--OMGKEEPTHISNEWLINE--'; # or some unique string
$escaped_newlines = str_replace("\n", $fake_newline, $_POST['message']);
$sanitized = sanitize_text_field($escaped_newlines);
update_post_meta($post_id, 'message', str_replace($fake_newline", "\n", $sanitized));
더 많은 삭제를 커스터마이즈하고 싶다면 보다 세밀한 처리에 의존해야 합니다.sanitize_*
WordPress에서 제공하는 기능입니다.
이 메서드를 사용해 본 결과, 텍스트 영역의 아포스트로피는 들어오는 길에 백슬래시에 의해 이스케이프되고, 나가는 길에 esc_textarea에 의해 삭제되지 않습니다.
그래서 결국엔 내가 이 모든 것들을
stripslashes( esc_textarea( $THING ) )
다시 표시할 때 텍스트 영역에서 해당 항목을 성공적으로 제거합니다.
모든 것을 시도해봤지만, 내가 이 일을 할 수 있었던 유일한 방법은 다음과 같았다.
기능.php
wp_customize->add_section('section_id', array(
'title' => __('custom_section', 'theme_name'),
'priority' => 10,
'description' => 'Custom section description',
));
$wp_customize->add_setting('custom_field', array(
'capability' => 'edit_theme_options',
'sanitize_callback' => 'sanitize_textarea_field',
));
$wp_customize->add_control('custom_field', array(
'type' => 'textarea',
'section' => 'custom_section',
'label' => __('Custom text area with multiline brakes'),
));
전면에 표시(예: footer.php)
<?php $custom_field= get_theme_mod('custom_field');
if ($custom_field) {
echo nl2br( esc_html( $custom_field) );
} ?>
사용해야 합니다.'sanitize_callback' => 'sanitize_textarea_field'
그리고.nl2br( esc_html())
일하기 위해.
언급URL : https://stackoverflow.com/questions/20444042/wordpress-how-to-sanitize-multi-line-text-from-a-textarea-without-losing-line
'programing' 카테고리의 다른 글
Mongod가 /data/db 폴더가 없다고 불평한다. (0) | 2023.04.02 |
---|---|
반응성이 좋은 디자인으로 구글 광고 크기를 조정할 수 있는 방법이 있나요? (0) | 2023.04.02 |
분류법별로 사용자 지정 게시 유형에 대한 영구 링크 정의 (0) | 2023.04.02 |
reactjs에서 소품은 값으로 통과합니까, 아니면 참조로 통과합니까? (0) | 2023.04.02 |
시간 없이 날짜만 알고 표에서 선택(ORACLE) (0) | 2023.04.02 |