it-source

쇼트 코드 출력 추가쇼트 코드 출력 추가새 줄 뒤에새 줄 뒤에

criticalcode 2023. 2. 16. 21:48
반응형

쇼트 코드 출력 추가
새 줄 뒤에

페이지에 CSS 스타일 속성을 추가하기 위한 쇼트 코드를 작성하려고 합니다.제 테마의 functions.php에 다음 코드를 추가했습니다.

function add_style( $atts, $content = null ) {
    return '<style>' . $content . '</style>';
}
add_shortcode( 'style', 'add_style' );

이 페이지의 편집자에서는 다음과 같이 사용했습니다.

[style]
.image-main{
  border:5px solid lightblue;
}
[/style]

렌더링된 페이지의 출력처는 다음과 같습니다.

<style>
<br />
.image-main{<br />
  border:5px solid lightblue;<br />
}<br />

</style>

숏코드를 설정하여 삭제하려면 어떻게 해야 합니까?<br />여러 줄의 콘텐츠가 있을 때?

WordPress가 콘텐츠를 처리하는 기본 순서 때문에 br 태그가 삽입됩니다.wpautop(줄 바꿈을 p 또는 br 태그로 변환하는 함수)은 쇼트 코드가 처리되기 전에 실행됩니다.

솔루션:

wpautop의 실행 우선순위를 변경하여 이전이 아닌 숏코드 처리 후에 실행되도록 합니다.이 기능을 추가합니다.php 파일:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);

이제 쇼트코드 블록 내에 추가 p 태그 또는 br 태그가 추가되지 않습니다.실제로 줄 바꿈은 p 태그 및/또는 br 태그로 자동 변환되지 않습니다.따라서 올바른 줄 바꿈을 p 태그와 br 태그로 변환하려면 다음과 같이 쇼트 코드 함수 내부에서 wpautop을 실행해야 합니다.

function bio_shortcode($atts, $content = null) {
   $content = wpautop(trim($content));
   return '<div class="bio">' . $content . '</div>';
}
add_shortcode('bio', 'bio_shortcode');

문제의 해결 방법은 remove를 교체하는 것입니다."<br /r>"사용.str_replace();

function add_style( $atts, $content = null ) {
    $pure_content = str_replace("<br />","",$content);
    return '<style>' . $pure_content . '</style>';
}
add_shortcode( 'style', 'add_style' );

언급URL : https://stackoverflow.com/questions/32570351/shortcode-output-adding-br-after-new-line

반응형