백엔드 개발 PHP 튜토리얼 WordPress_php 팁에서 사용자 정의 저장 필드를 작성하기 위한 관련 PHP 함수 분석

WordPress_php 팁에서 사용자 정의 저장 필드를 작성하기 위한 관련 PHP 함수 분석

May 16, 2016 pm 08:01 PM
php wordpress 필드

워드프레스의 사용자 정의 필드는 글의 메타정보(메타정보)입니다. 이 기능을 이용하면 글의 기능을 확장할 수 있으며, 워드프레스 플러그인 개발 및 테마를 심도 있게 학습하기 위한 필수 지식입니다. 개발 및 기사에 대한 일부 추가 사용자 정의 필드를 저장하는 것이 편리합니다.

사용자 정의 필드는 플러그인 개발자만 사용하는 것이 아닙니다. WordPress의 추천 이미지, 사용자 정의 페이지 템플릿 및 기타 기능에 대한 정보가 사용자 정의 필드 형식으로 저장됩니다.

기사 편집기 인터페이스의 "사용자 정의 열" 섹션에서는 이름이 "_"로 시작하는 필드를 제외한 필드를 관리할 수 있습니다. ("사용자 정의 열" 섹션이 없으면 오른쪽 상단) 너무 많아서 WordPress 자체에 사용된 사용자 정의 필드를 여기서 관리할 수 없습니다.
보관원리

사용자 정의 필드는 매우 유연합니다. 먼저 저장 원리와 그 유연성에 대해 이야기해 보겠습니다. 데이터베이스에서 기사를 저장하는 wp_posts 형식에는 필요한 기사 정보를 저장하는 데 사용되는 기본 20개 항목만 있습니다.

20151225143034327.png (332×620)

사용자 정의 필드를 저장하는 wp_postmeta 테이블에는 Meta_id(사용자 정의 필드 ID), post_id(사용자 정의 필드가 속한 기사 ID), Meta_key(사용자 정의 필드 이름)의 4개 항목만 있습니다. 및 Meta_value(사용자 정의 필드의 값), 일반적으로 우리는 Meta_key와 Meta_value 두 항목에만 주의하면 됩니다.

이 때문에 각 기사에는 이름은 같지만 값이 다른 사용자 정의 필드가 있을 수 있으며, 모든 플러그인과 테마에서는 사용자 정의 필드를 사용하여 기사 정보를 확장할 수 있습니다.

기사의 사용자 정의 필드 이름은 반복될 수 있습니다.

필드 추가

사용자 정의 필드는 기사 편집 페이지에서 조작할 수 있지만, 이 기사에서는 주로 개발에 관해 작성합니다.

20151225143103462.png (832×428)

사용자 정의 필드를 추가하려면 add_post_meta() 함수를 사용하세요.

add_post_meta( $post_id, $meta_key, $meta_value, $unique );
로그인 후 복사

매개변수:

$post_id

(정수) (필수) 사용자 정의 필드가 추가된 게시물의 ID입니다.

기본값: 없음

$meta_key

(문자열) (필수) 사용자 정의 필드의 이름입니다.

기본값: 없음

$메타_값

(혼합) (필수) 사용자 정의 필드의 값입니다.

기본값: 없음

$고유

(부울) (선택) 동일한 이름의 필드가 이미 있는 경우 반복적으로 추가할지 여부입니다. True는 허용하고, False는 허용하지 않습니다.

기본값: 거짓

업데이트 필드

필드 값을 업데이트하려면 update_post_meta() 함수를 사용할 수 있습니다.

update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );
로그인 후 복사

매개변수:

$post_id

(정수) (필수) 사용자 정의 필드를 업데이트할 기사의 ID입니다.

기본값: 없음

$meta_key

(문자열) (필수) 업데이트할 사용자 정의 필드의 이름입니다.

기본값: 없음

$메타_값

(혼합) (필수) 업데이트할 사용자 정의 필드의 값입니다.

기본값: 없음

$prev_value

(혼합) (선택 사항) 이 매개변수는 게시물에 이름이 같은 사용자 정의 필드가 여러 개 있는 경우에만 유용합니다. 비워 두면 이름이 같은 모든 필드가 업데이트되고, 그렇지 않으면 이 매개변수와 값이 같은 필드가 업데이트됩니다.

기본값: 빈 문자열

필드 가져오기

필드를 얻으려면 get_post_meta() 함수를 사용할 수 있습니다.

get_post_meta( $post_id, $key, $single );
로그인 후 복사

매개변수:

$post_id

(정수) (필수) 루프에 있는 경우 가져올 필드의 기사 ID는 get_the_ID()를 사용하여 설정할 수 있습니다.

기본값: 없음

$키

(문자열) (선택 사항) 가져올 필드의 이름입니다.

기본값: 없음

$싱글

(Boolean) (선택) True인 경우 문자열을 반환하고, False인 경우 배열을 반환하며, 동일한 키 값을 가진 사용자 정의 필드의 값이 추가된 순서대로 시퀀스 배열로 결합됩니다.

기본값: 거짓

다음은 통계 검색의 간단한 예입니다.

function Bing_statistics_visitors( $cache = false ){
  if( !is_singular() ) return;
  global $post;
  $id = $post->ID;
  if( get_post( $id )->post_status != 'publish' ) return;
  $post_views = (int) get_post_meta( $id, 'views', true );
  update_post_meta( $id, 'views', ( $post_views + 1 ) ) || add_post_meta( $id, 'views', 1, true );
}
add_action( 'wp_head', 'Bing_statistics_visitors' );
로그인 후 복사
카운트 가져오기:
function Bing_get_views(){
  global $post;
  $views = number_format( (int) get_post_meta( $post->ID, 'views', true ) );
  return $views;
}

로그인 후 복사

不可见的自定义字段
虽然在数据库里存在很多 WordPress 自己创建的自定义字段,但是在文章编辑器的 “自定义栏目” 里却并没有显示(没有 “自定义栏目” 板块请在右上角的 “显示选项” 开启),比如特色图像、自定义页面模板和评论是否开启等等。

如果仔细观察,会发现这些自定义字段的名字都是以下划线 “_” 开头的,所以说,以下划线 “_” 开头的自定义字段并不会显示给用户,the_meta() 函数也不会输出,对用户来说是隐藏的。

20151225143222855.png (827×410)

利用这个特性,我们可以把不想让用户随便修改的字段、会让用户感到困惑的字段,比如已经提供设置界面的设置选项、缓存数据等等,以免出现错误。

下边是一个小例子:

add_post_meta( get_the_ID(), '_time_diff', time() );
로그인 후 복사

另外,如果自定义字段储存的内容是数组即使名字前边不是下划线 “_” 也不会显示。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

CakePHP 날짜 및 시간

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

CakePHP 프로젝트 구성

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

CakePHP 파일 업로드

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

CakePHP 라우팅

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP 토론

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP 빠른 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법

See all articles