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

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

WBOY
WBOY원래의
2016-05-16 20:01:581061검색

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

사용자 정의 필드는 플러그인 개발자만 사용하는 것이 아닙니다. 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으로 문의하세요.