플러그인에서 제목 태그를 변경하도록 wp_title을 설정하시겠습니까?
방문자가 선택한 내용에 따라 쿼리 문자열을 사용하여 페이지 데이터를 불러오는 WP 플러그인을 만들었습니다.이것은 분명히 추가 페이지를 '시뮬레이션'하지만 페이지 제목은 WP Admin에서 설정한 제목에서 변경되지 않습니다.
난 계속 이 일에 관여하려고 노력했어wp_title타이틀 태그를 변경할 수 있지만 이 태그는 작동하지 않습니다.
다음 기능이 작동합니다.
public function custom_title($title) {
return 'new title';
}
add_filter( 'wp_title', array($this, 'custom_title'), 20 );
// changes <title> to 'new title'
변수를 전달하려고 하면 바로 실패합니다.
public function custom_title($title, $new_title) {
return $new_title;
}
WordPress는 두 번째 인수가 없다고 불평합니다. 페이지 로드 시 함수가 호출되고 있기 때문에 이치에 맞는 것 같습니다.내가 할 수 있는 일이 있다면...$this->custom_title($title, 'new title);내 플러그인 안에 있는데 그게 불가능할 것 같아?
일반적인 PHP 클래스 문제인 것 같아 여기에 올렸습니다.
반환된 변수를 글로벌화할 수 있습니까? 예를 들어 다음과 같은 다른 함수의 쿼리에서 '제목' 열을 반환하고 싶습니다.$query->title
함수가 실행되면 데이터베이스에서 데이터를 반환합니다.
public function view_content()
{
$query = $this->db->get_row('SELECT title FROM ...');
$query->title;
}
페이지 제목으로 $query-> 제목을 설정해야 합니다.
public function custom_title()
{
if($query->title)
{
$new_title = $query->title;
}
}
필터 메커니즘의 구조를 잘못 알고 있는 것 같습니다.afilter는 특정 시간에 특정 파라미터를 사용하여 WordPress를 호출하여 결과를 가져오는 함수입니다.다음은 WordPress 필터에 대한 적절한 소개입니다.http://dev.themeblvd.com/tutorial/filters/
또, 다음의 메뉴얼 페이지를 참조할 수도 있습니다.wp_title특히 filter를 사용하면 함수에서 어떤 인수를 예상해야 하는지 이해할 수 있습니다.https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title
원하는 기능을 수행하는 코드는 다음과 같습니다.
public function __construct() {
//...
add_filter( 'wp_title', array($this, 'custom_title'), 20);
}
public function view_content() {
$query = $this->db->get_row('SELECT title FROM ...');
$this->page_title = $query->title;
}
public function custom_title($title) {
if ($this->page_title) {
return $this->page_title;
}
return $title;
}
액션과 필터 훅을 사용하면 프로그램 실행 시 Wordpress에 의해 생성된 무언가를 변경할 수 있습니다.이러한 커스텀 변경은 특정 후크에 연결된 기능 내에서 이루어집니다.
첨부된 함수에 전달된 파라미터는 원래 Wordpress에 의해 생성되며, 첫 번째 파라미터는 다음과 같은 경우 변경 및 반환할 값입니다.the_title후크 그것은 페이지 제목입니다.
같은 필터를 여러 번 사용할 수 있기 때문에 연결된 다른 함수에서 값을 변경할 수 있기 때문에 정확히 언제 함수를 실행할지는 정의된 priority와 필터에 추가된 순서에 따라 달라집니다.
필터와 액션의 차이는 첫 번째 경우 값(수정 또는 원본)을 반환해야 하는 반면 액션은 예를 들어 무언가를 인쇄할 수 있는 트리거된 이벤트입니다.물론 사용자 정의 작업 및 필터를 정의하고 트리거할 수도 있습니다.
필터는 적용되기 전에 언제든지 추가할 수 있으며, 후크 함수는 아래와 같이 익명 함수의 형태로 할 수 있습니다.
public function view_content()
{
$query = $this->db->get_row( 'SELECT title FROM ...' );
add_filter( 'wp_title', function( $title ) use ( $query ) {
return $query->title;
}, 20 );
}
또는 값을 개체 속성으로 저장하고 나중에 사용할 수 있습니다.
public function view_content()
{
$query = $this->db->get_row( 'SELECT title FROM ...' );
$this->title = $query->title;
add_filter( 'wp_title', array( $this, 'custom_title' ), 20 );
}
public function custom_title( $title )
{
return $this->title;
}
WP 플러그인 API
PHP 익명 함수
PHP 클래스 속성
Wordpress는 현재와 같이 함수가 1개의 파라미터로 호출되는 몇 군데에서 함수를 사용하고 있다고 생각하기 때문에 두 번째 파라미터에 대해 불만을 제기합니다.
public function custom_title($title, $new_title='') {
return $new_title;
}
함수에 로직을 더 추가하는 것으로 생각됩니다만, 이렇게 하면 두 번째 파라미터가 '정의'됩니다.이건 정말 '완벽한' 코드가 아니야.
두 번째 질문입니다.네, 오브젝트에 확실히 무언가를 저장할 수 있습니다.코드의 다른 부분에서 액세스할 수 있는지 확인하는 것이 중요합니다.
언급URL : https://stackoverflow.com/questions/31441802/set-wp-title-to-change-title-tag-from-plugin
'programing' 카테고리의 다른 글
| angular js에 사용할 apache 2에 대한 규칙 다시 쓰기 (0) | 2023.04.05 |
|---|---|
| MERN에서 백엔드 및 프런트엔드의 파일 구조를 구성하는 방법 (0) | 2023.04.05 |
| Oracle은 SQL Server의 테이블 변수와 동등합니까? (0) | 2023.04.05 |
| JSON을 통해 JSON의 가치를 얻습니다.그물 (0) | 2023.04.05 |
| 사용자의 활성 및 비활성 Oracle 세션을 모두 종료하는 방법 (0) | 2023.04.05 |