동일한 스크립트를 통해 모든 사용자 정의 게시 유형 이름 인스턴스를 수동으로 반복해서 변경하는 일이 지루해서 WordPress에서 "사용자 정의 게시 유형"을 간단하게 만들고 싶습니다.PHP의 동적 함수 이름
CPT 이름을 포함하는 변수를 만들어 필요한 곳 어디에서나 사용하는 것은 간단합니다. 이렇게하면 스크립트의 시작 부분에 변수를 선언하고 나머지는 처리해야합니다.
유일한 문제는 CPT 이름 앞에 스크립트의 모든 함수 앞에 접두어를 붙이면됩니다. 함수 이름의 변수를 사용하는 것이 PHP에서 쉽지 않거나 권장되지 않는 것 같습니다. .
어떻게 해결할 수 있습니까? 여기
아래 예제로 만드는 것이 명확 :$prefix = 'news';
function news_custom_type_init()
{
global $prefix;
register_post_type($prefix, array(
'labels' => array(
'name' => $prefix,
'singular_label' => $prefix,
'add_new' => 'Add',
...
));
register_taxonomy_for_object_type('category', $prefix);
}
add_action('init', $prefix.'_custom_type_init');
이 거의 괜찮와의 단어 "뉴스"를 작성해야 할뿐만 아니라 내가 동적 위해 함수 이름을 바꿀 수 있다면 표준화 할 수 그 앞에 "$ 접두사"를 사용하십시오.
이 좋았을 수도 있지만 그냥 작동하지 않습니다
$prefix = 'news';
$functionName= $prefix."_custom_type_init";
function $functionName()
{
global $prefix;
register_post_type($prefix, array(
'labels' => array(
'name' => $prefix,
'singular_label' => $prefix,
'add_new' => 'Add',
...
));
register_taxonomy_for_object_type('category', $prefix);
}
add_action('init', $prefix.'_custom_type_init');
수동 기능이 좀 (스크립트가 이와 같은 기능의 수십 내장 특히) 내 시도의 원래 목적을 패배 이름을 갖는 .
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
추신 : 나는 이것에 대해 많이 봤지만 "stackoverflowed"하지만 내 요구에 맞는 작업 솔루션을 찾지 못했고 WordPress 오류 메시지를 생성하지 않습니다.
감사합니다.
$function = $prefix . '_custom_type_init';
if(function_exists($function)) {
$function();
}
을 사용하는 것입니다 사용할 수 있다고 생각 (또는 어쩌면 내가하지 않았다 당신의 요점을 이해하십시오). 스크립트가 함수가 이미 존재하는지 확인하고 함수가 맨 처음에 수동으로 만들어 졌는지 확인합니다. 맞습니까? 나는 기존 함수를 동적으로 "호출"하려고하지 않고, 내가하려고하는 것은 정확하게 그 함수를 동적으로 "생성"하는 것이다. 위의 스크립트에서 간단하게하기 위해, 나는 어디에서든지 "뉴스"라는 단어를 지우고 싶지만 맨 처음 지시문을 지우고 스크립트를 작동 시키려고합니다. 내가 널 데려 오지 않으면 미안해. – Baylock
제대로 이해했다면 "news_something"및 "blog_something"등과 같은 여러 가지 기능을 원합니다. 그런 다음 동적으로 필요한 것을 호출하십시오. 필자가 제공 한 코드는 init()에서 호출하고 호출 할 함수를 선택해야합니다. 원하는 기능이 여러 위치에서 호출되는 경우, PHP에 등록해야하기 때문에 함수를 만들어서 동일한 함수를 호출해야한다고 생각합니다. – hexblot
도움을 주셔서 감사합니다. 나는 작동하지 않는 예제로 나의 목적을 더 잘 이해하기 위해 위의 메시지를 편집했다. – Baylock