선택한 페이지 템플릿을 기반으로 관리자 메타 박스 전환


18

특정 템플릿이 특정 WordPress 페이지에 할당 된 경우 에만 사용자 정의 필드 인터페이스를 표시하고 싶습니다 .

어떤 아이디어?


'실시간'일 필요가없는 경우 (즉, 페이지 템플릿을 변경해도 메타 박스가 나타나거나 사라질 필요가 없음) 다음 관련 질문을 참조하십시오. wordpress.stackexchange.com/questions/48611/…
Stephen Harris

@StephenHarris 댓글 주셔서 감사합니다. 설정에 "템플릿 당"옵션이 포함 된 WPAlchemy MetaBox 클래스를 작성했습니다.
Jonathan Wold

답변:


22

이 상황에 접근하는 가장 좋은 방법은 JavaScript를 이용하는 것입니다. 이렇게하면 선택한 값이 변경 될 때마다 관련 메타 박스를 즉시 숨기거나 표시 할 수 있습니다.

사용 wp_enqueue_script()functions.php관리자 영역에서 사용자 지정 자바 스크립트 파일을로드 :

add_action('admin_enqueue_scripts', 'my_admin_script');
function my_admin_script()
{
    wp_enqueue_script('my-admin', get_bloginfo('template_url').'/my-admin.js', array('jquery'));
}

jQuery가 필요한 스크립트 자체는 페이지 템플릿 드롭 다운 목록에서 선택한 값을 기반으로 메타 박스를 숨기거나 표시합니다. 이 예에서는 기본 페이지 템플릿이 선택된 경우 게시물 축소판의 메타 박스 만 표시합니다.

(function($){
$(document).ready(function() {

    var $page_template = $('#page_template')
        ,$metabox = $('#postimagediv'); // For example

    $page_template.change(function() {
        if ($(this).val() == 'default') {
            $metabox.show();
        } else {
            $metabox.hide();
        }
    }).change();

});
})(jQuery);

그리고 재미를 위해 동일한 스크립트의 더 짧고 덜 장황한 버전이 있습니다.

(function($){
$(function() {

    $('#page_template').change(function() {
        $('#postimagediv').toggle($(this).val() == 'default');
    }).change();

});
})(jQuery);

와우 감사합니다! 나는 이것을 곧 시험 할 것이고 그에 따라 다시보고 할 것이다.
Jonathan Wold

정말 대단해 ... 이것이 내가 필요한 것입니다. 나를 위해 완벽하게 일했습니다. 감사합니다!!!
Ross

죄송하지만 자바 스크립트의 초보자는 내가 필요한 것을 알고 있지만 올바른 방식으로 일을 할 수없는 것 같습니다 ... 그래서 나는 무엇을 이해하지 못합니다 자바 스크립트 파일을 변경했습니다. 나와 같은 nooby에 대한 추가 설명이 가능합니까? ;)

1

jQuery로 메타 박스를 숨기도록 메타 박스를 렌더링하는 대신 이것을 사용할 수 있습니다. 메타 박스를 숨기거나 표시하려면 드롭 다운 필드를 변경 한 후 '업데이트'를 선택해야합니다.

function add_meta_box() {
    global $post;
    if(!empty($post)) {
        $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);

        if($pageTemplate == 'your-page-template-here.php' ) {
            add_meta_box( $id, $title, $callback, 'page', $context, $priority, $callback_args );
        }
    }
}
add_action( 'add_meta_boxes', 'add_meta_box' );

원하는대로 6 행과 7 행만 업데이트하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.