태그 보관물: 워드프레스 훅

Flex Posts 플러그인 사용시 발췌문 길이 조정도 안되고 아주 길게 표시될때 해결법

Flex Posts 플러그인은 사이드바에 위젯으로 등록해서 랜덤 포스트, 최신글 표시 등을 담당하는 플러그인입니다.

모종의 이유로 발췌문 표시 조절이 안되고 아주 길게 표시될때 해결법은요.

여러 연쇄적인 실행이 있을테니 이 글에서 말한 것과 다른 원인일 수 있으나, 일단 아래와 같은 플러그인 파일을 들여다보세요.

Flex Posts 디렉토리 아래 template-tags.php

이 파일에서 flex_posts_excerpt() 함수가 직접적으로 발췌문을 표시하는 코드입니다.

제 경우 이 파일과 이 파일 위에 기재된 함수를 고쳐서 해결했는데요.

를 추가하고

flex_posts_excerpt() 함수를 아래와 같이 대체했습니다.

이렇게 해두니 다시 잘 작동합니다.

get_the_excerpt()와 wp_trim_words()로 발췌문 길이 조정하기

발췌문은 플러그인과 같은 추가된 프로그램에서 조정하기도 하지만, 워드프레스 코어에서 제공하는 함수로 조정할 수도 있습니다.

우선 get_the_excerpt()로 발췌문을 가져오는게 가능하구요. 가져온 발췌문을 wp_trim_words()로 잘라내서 잘라진 발췌문을 표시하도록 코딩하면 됩니다.

아래와 같은 코드가 참고가 될 것입니다.

이 경우는

get_the_excerpt() 함수로 현재 처리되고 있는 글의 발췌문을 가져와서
wp_trim_words() 함수로 잘라내고 이를 echo()로 표시하는 코드입니다.

get_the_excerpt()의 잘라내는 기본값은 55글자구요. 위 코드를 쓰면 이를 15로 조정해서 처리할 수 있게 됩니다.

이를 응용해서

처럼 테마 functions.php 파일에 기재해두면 워드프레스 코어의 포스트 임베드 위젯을 쓸때 표시되는 발췌문의 길이를 55로 제한해서 표시하는게 됩니다.

플러그인 위젯으로 발췌문을 표시하는 기능을 쓸때도 이 함수들을 잘 쓰면 좋습니다. 플러그인에서 자체적으로 구현하지 않았다면요. 자체적으로 구현한 코드가 버전이 오래된 등의 이유로 잘 작동하지 않을때도 위의 두 함수를 잘 활용하면 대체가 됩니다. 모종의 이유로 변조된 경우에도 해당됩니다.

워드프레스 코어에서 제공하는 임베드 블록을 쓸때 글 길이가 너무 길게 표시되는 현상 해결

어떤 이유로 인해 워드프레스 코어에서 제공하는 임베드 블록을 쓰면 발췌글 길이가 너무 길게 표시되는 문제가 있었습니다. wp-includes/embed.php 에 있는 the_excerpt_embed() 함수에 $output = wp_trim_words( $output ) 라인을 추가하는 필터를 다니 해결되네요. (중복으로 $output 을 결정하는지는 미확인인데 일단은 작동합니다)

테마의 functions.php 에 아래 라인을 추가합니다.

저장하고 나와서 페이지를 로드해보면 임베드된 길이가 조정되어 나옵니다.

wp_trim_words() 의 두번째 인자로 길이 조정을 하는 방법도 있습니다. (기본값 영어 기준 55)

워드프레스에서 화면표시 장애시 플러그인 해제를 우선 시키는 이유

워드프레스는 코어 작동이 있고 훅으로 처리하는 작동이 있습니다. 훅은 워드프레스에서 제공하는 코어 작동을 일부 바꾸어야 할때 쓰는 프로그래밍 기법인데요. 테마를 예로 들면 functions.php나 다른 기타 PHP 파일에 액션이나 필터 형태로 함수를 만들어 등록시켜 작동합니다.

그런데 플러그인 고유의 알고리즘과, 워드프레스 코어의 변경점이 맞물리면 내부적으로 문제가 있게 될 수 있습니다. 플러그인끼리 충돌도 가능하구요. 그래서 화면 표시가 안될때 플러그인부터 점검해보라고 합니다.

왠만하면 플러그인 문제가 있을때 이에 대응되는 오류 메시지를 표시하는데, 해당 사이트 워프의 여러 세팅 상태에 의해서는 별다른 오류 메시지 없이 표시되기도 할 것 같애요.

그래서 워프 공식 플러그인 다운로드 사이트에서는 현 버전에서 테스트됨과 같은 지표도 알려주고 개발된지 몇년이 지났는지 알려줍니다. 이 경우, 설치를 해봐야 작동하는지가 알 수 있지만, 장담은 금물입니다.

프로그래밍 경험이 있다면, 플러그인이 포함하는 훅 기능과 같은 코드의 특성을 유추해보면 오래되도 작동하는지를 대략 추정해볼 수는 있네요. 피드 기능 끄는 플러그인이라면, 워드프레스 버전에 따라, 플러그인이 발표된 시점부터 릴리즈된 워드프레스 릴리즈들의 What’s New 등을 살펴보고 피드 관련 업데이트가 안됨을 감지해서 판단해보는 등의 방법인데, 완전한 방법은 아니네요. 워드프레스 코어의 변경점과 깊은 연관도가 있는 플러그인이면 심지어 바로 전 버전의 워드프레스에서 작동하던게 최신 버전에서는 문제가 있게 되기도 하니까요.

화면표시의 경우 플러그인 선별 해제로 안되면 서버 캐시와 웹브라우저 임시파일 문제일 가능성이 있는데 클웨인 경우 breeze를 쓰면 캐시 비우는게 손쉽게 됩니다. 이 경우에도, 캐시 관련 정보를 담은 파일이 권한변경이 되어 있으면 캐시가 그냥 남아있기도 해서 문제가 되기도 하는데요. 일단은 화면표시 장애는 플러그인, 서버 캐시와 웹브라우저 임시파일, 테마 코드 문제가 원인으로 대표적입니다.

특수한 경우 방화벽 설정 같은 서버 내부 작동의 다른 부분이 문제가 될 수도 있구요. 방화벽에 의해 DB가 막힌다든지의 경우가 있을 수 있네요.

이러한 경우에도 워프 보안 플러그인을 설정을 바꾸거나 비활성화로 해결이 될 수 있으니, 플러그인을 우선 살펴보면 좋습니다.