<br> 태그를 자동으로 추가하여 컨텐츠를 게시하지 마십시오.


26

<br>WordPress 텍스트 편집기에서 Return을 추가 할 때 WordPress에서 자동으로 태그를 삽입하지 못하게하는 방법이 있습니까?

코드를 내가 좋아하는 방식으로 구성하고 쉽게 읽을 수있는 코드 편집기와 같이 동작하기를 원합니다.

편집기에서 사용중인 코드는 다음과 같습니다.

[one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third]

읽고 편집하기 쉽도록 다음과 같이 구성하고 싶습니다.

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

그러나 이렇게 <br>하면 게시물 내용에 보이지 않는 태그가 추가되어 내 페이지의 레이아웃이 엉망이됩니다.


모든 곳 에서 또는 해당 단축 코드에 대해서만 태그를 제거 하시겠습니까?
shea

내 대답은 여기를 참조하십시오 : wordpress.stackexchange.com/questions/55782/…
Chiedo

답변:


25

shea의 대답은 많은 경우와 같이 이상적이지 않습니다.

  • 당신은 <br>, <p>등에서 모든 것을 제거하고 싶지 않습니다 . 당신은 위 코드가 삭제할 WP 비주얼 컴포저의 기본 동작으로 원합니다.
  • 대부분의 경우 WP의 기본 핵심 동작을 변경하므로 "핵심 해킹"으로 간주됩니다. 예를 들어 이러한 것은 ThemeForest에 전달되지 않습니다.

보시다시피 주로 단축 코드에 문제가 있습니다. 이것에 접근하는 올바른 방법은 기본 동작을 변경하는 것이 아니라 (핵을 해킹) 컨텐츠를 필터링하는 것입니다. 따라서 필터를 추가하고 변수에 다음과 같이 필터링하려는 Shotrcode 배열을 전달하십시오.

function the_content_filter($content) {
    $block = join("|",array("one_third", "team_member"));
    $rep = preg_replace("/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/","[$2$3]",$content);
    $rep = preg_replace("/(<p>)?\[\/($block)](<\/p>|<br \/>)?/","[/$2]",$rep);
return $rep;
}
add_filter("the_content", "the_content_filter");

내부의 내용은 필터링되므로 짧은 코드 <br>, <p>등 은 없어야 하지만 다른 내용 (예 : 사용자가 만든 WP 편집기의 표준 텍스트)은 여전히 ​​WP의 모든 기능을 갖습니다.

참고 문헌 :

  1. the_content WP 필터
  2. 정규 표현식 "번역기"
  3. PHP 함수 가입
  4. preg_replace PHP 함수

내 프로젝트에서 완벽하게 작동했습니다. 굉장하고, 훌륭하고, 훌륭하고, 훌륭합니다 ..... 너무 훌륭합니다!
arefin2k

@Borek 이것은 대단하고 정말 잘 작동하는 것 같지만 (+1) 답변을 개선하기 위해 무엇을하고 있는지 설명 할 수 있습니까? 사물의 모습에서, 그것은 제거의 <p><br>에서 태그 근처 one_thirdteam_member단축 코드,하지만 난 (내 REGEX 기술 스크래치까지 확실히되지 않습니다) 정확히 모르겠어요. 그것이 우리를 위해 무엇을하는지, 이제 우리는 다른 단축 코드를 위해 그것을 구성 할 수 있습니까?
dKen

@dKen 정확히 당신이 쓴 것을하고 있습니다. 정규식 외에도 내장 WP 필터 the_content로 내용을 맞추기 때문에 정말 간단합니다. 필터링 할 대상 (블록) 및 방법 (rep)을 지정하는 함수를 통해 필터링 할 내용을 제공하면됩니다. 각 기능과 필터를 확인하여이를 더 잘 이해할 수 있도록 참조를 추가했습니다. 더 짧은 코드를 추가하려면 간단히 다음과 같이 짧은 코드 이름을 추가하여 $ block 배열을 확장하면됩니다.join("|",array("one_third", "team_member", "next_one", "another_one", "one_more"));
Borek

... 프로 개발자가 잘했다. 공감.
fusion27

참고로 이것은 페이지를 볼 때만 작동합니다. 그러나 편집기에서 평소와 같이 원치 않는 <p>와 <br>가 여전히 잘 보입니다.
MarsAndBack

13

wpautop()기능은 줄 바꿈을 유지하기 위해 콘텐츠에 추가 <p>하고 <br>태그를 지정합니다. 이러한 태그를 직접 추가하려는 경우 게시물 내용에이 기능을 적용하는 필터를 제거 할 수 있습니다.

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

자동 파라가 라프 생성 ( <p>태그 삽입 ) 을 유지 하고 추가 <br>태그를 제거 하려면이 코드를 대신 사용할 수 있습니다.

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

function wpse_wpautop_nobr( $content ) {
    return wpautop( $content, false );
}

add_filter( 'the_content', 'wpse_wpautop_nobr' );
add_filter( 'the_excerpt', 'wpse_wpautop_nobr' );

이 코드를 어디에 넣을 지 확실하지 않으면 이 링크를 참조하십시오 .


3

플러그인 "내 마크 업을 막지 마십시오"를 설치하십시오.

각 페이지에 확인란 옵션을 추가하여 자동 삽입 <p><br>태그를 비활성화 합니다.

이 사이트 전체를 수행하는 옵션도 있습니다.


1

아마도 그것은 혼란을 일으키는 텍스트 편집기 일 것입니다. 이것이 내가 한 일입니다.

TinyMCE를 사용합니다. 텍스트 편집기의 설정에서 "HTML 편집기에서 저장하고 표시 할 때" "p"및 "<br />"태그 제거 중지 "를 선택 취소했습니다. 나를 위해 일했다.


0

do_shortcode()필터가 필요한 다른 컨텐츠가없는 한 컨텐츠에있는 모든 것이 짧은 코드 인 경우 간단히 사용할 수 있습니다.

나는 문맥을 모른다.하지만 당신이 루프에 있다면 :

echo do_shortcode($post->post_content);


0

Borek의 대답은 원시 HTML을 작성하는 유스 케이스에서 작동하지 않았습니다.

이를 위해 Code Snippets 플러그인을 사용하여 ( 단순 하게 실행되는 임의의 PHP 스 니펫을 쉽게 추가 할 수 있음) [html][/html]단축 코드에 대한 스 니펫을 만들었습니다 . 이 단축 코드의 멋진 점 은 전체 게시물 에서 자동 삽입 및 태그 를 사용하지 않도록 설정하는 toggle-wpautop 플러그인 과 호환된다는 것 입니다. 믹스 앤 매치를 사용할 수 있습니다.<br><p>

function html_shorttag_filter($content) {
  // Based on: https://wordpress.org/plugins/lct-temporary-wpautop-disable-shortcode/
  $new_content = '';
  $pieces = preg_split('/(\[html\].*?\[\/html\])/is', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
  // don't interfere with plugin that disables wpautop on the entire page
  // see: https://plugins.svn.wordpress.org/toggle-wpautop/tags/1.2.2/toggle-wpautop.php
  $autop_disabled = get_post_meta(get_the_ID(), '_lp_disable_wpautop', true);
  foreach ($pieces as $piece) {
    if (preg_match( '/\[html\](.*?)\[\/html\]/is', $piece, $matches)) {
      $new_content .= $matches[1];
    } else {
      $new_content .= $autop_disabled ? $piece : wpautop($piece);
    }
  }
  // remove the wpautop filter, but only do it if the other plugin won't do it for us
  if (!$autop_disabled) {
    remove_filter('the_content', 'wpautop');
    remove_filter('the_excerpt', 'wpautop');
  }
  return $new_content;
}
// idea to use 9 is from: https://plugins.svn.wordpress.org/wpautop-control/trunk/wpautop-control.php
add_filter('the_content', 'html_shorttag_filter', 9);
add_filter('the_excerpt', 'html_shorttag_filter', 9);

0

이 기능 은 단축 코드 의 <p><br>태그 만 제거합니다 .

function bnd_fix_shortcodes_extra_line_break( $content ){
  $array = array (
    '<p>['    => '[',
    ']</p>'   => ']',
    ']<br />' => ']'
  );
  $content = strtr( $content, $array );
  return $content;
}
add_filter('the_content', 'bnd_fix_shortcodes_extra_line_break');

또한 모든 경우에 영향을 [하고 ]있습니다 하지 단축 코드 호출의 일부로 사용.
fuxia

0

코드 해킹에 익숙하지 않거나 플러그인을 사용하고 싶지 않은 사람들을 위해이 작업을 수행 할 수 있습니다.

1) WP 페이지에서 모든 현재 코드를 복사하십시오 (텍스트 편집기) 여기에 이미지 설명을 입력하십시오

2) 메모장에 붙여 넣고 계속 편집해야합니다 (짧은 코드, HTML 코드 또는 CSS 코드 추가)

3) 메모장에서 WP 페이지의 동일한 스크린으로 페이스트를 복사하십시오 (텍스트 편집기)

4) 같은 WP 페이지의 오른쪽에있는 [UPDATE] 버튼을 눌러 페이지를 게시합니다

여기에 이미지 설명을 입력하십시오

5) 마지막으로 라이브 사이트에서 미리보기

이 트릭은이 특정 페이지에 대해 [시각적 편집기]로 다시 전환하지 않고 [p] 또는 [br]에 대한 자동 추가가 더 이상 발생하지 않습니다.


-3

매우 간단한 해결책 : 워드 프레스 편집기에서 새 줄을 사용하지 마십시오. 네, 새로운 줄은 명확합니다. 그러나이 경우 중단을 여전히 이해할 수있는 수준으로 유지할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.