워드프레스의 사용자 정의 필드는 글의 메타정보(메타정보)입니다. 이 기능을 이용하면 글의 기능을 확장할 수 있으며, 워드프레스 플러그인 개발 및 테마를 심도 있게 학습하기 위한 필수 지식입니다. 개발 및 기사에 대한 일부 추가 사용자 정의 필드를 저장하는 것이 편리합니다.
사용자 정의 필드는 플러그인 개발자만 사용하는 것이 아닙니다. WordPress의 추천 이미지, 사용자 정의 페이지 템플릿 및 기타 기능에 대한 정보가 사용자 정의 필드 형식으로 저장됩니다.
기사 편집기 인터페이스의 "사용자 정의 열" 섹션에서는 이름이 "_"로 시작하는 필드를 제외한 필드를 관리할 수 있습니다. ("사용자 정의 열" 섹션이 없으면 오른쪽 상단) 너무 많아서 WordPress 자체에 사용된 사용자 정의 필드를 여기서 관리할 수 없습니다.
보관원리
사용자 정의 필드는 매우 유연합니다. 먼저 저장 원리와 그 유연성에 대해 이야기해 보겠습니다. 데이터베이스에서 기사를 저장하는 wp_posts 형식에는 필요한 기사 정보를 저장하는 데 사용되는 기본 20개 항목만 있습니다.
사용자 정의 필드를 저장하는 wp_postmeta 테이블에는 Meta_id(사용자 정의 필드 ID), post_id(사용자 정의 필드가 속한 기사 ID), Meta_key(사용자 정의 필드 이름)의 4개 항목만 있습니다. 및 Meta_value(사용자 정의 필드의 값), 일반적으로 우리는 Meta_key와 Meta_value 두 항목에만 주의하면 됩니다.
이 때문에 각 기사에는 이름은 같지만 값이 다른 사용자 정의 필드가 있을 수 있으며, 모든 플러그인과 테마에서는 사용자 정의 필드를 사용하여 기사 정보를 확장할 수 있습니다.
기사의 사용자 정의 필드 이름은 반복될 수 있습니다.
필드 추가
사용자 정의 필드는 기사 편집 페이지에서 조작할 수 있지만, 이 기사에서는 주로 개발에 관해 작성합니다.
사용자 정의 필드를 추가하려면 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() 函数也不会输出,对用户来说是隐藏的。
利用这个特性,我们可以把不想让用户随便修改的字段、会让用户感到困惑的字段,比如已经提供设置界面的设置选项、缓存数据等等,以免出现错误。
下边是一个小例子:
add_post_meta( get_the_ID(), '_time_diff', time() );
另外,如果自定义字段储存的内容是数组即使名字前边不是下划线 “_” 也不会显示。