메타 상자에 카테고리 메타 상자와 같은 탭이있는 쉬운 방법이 있습니까?


13

내 질문은 제목에 거의 요약되어 있습니다. New Post / Edit Post 관리자 페이지에 메타 상자를 놓아 카테고리 메타 상자와 같은 탭으로 메타 상자를 설정할 수 있기를 원합니다. 나는 이것을 쉽게 연결할 수있는 방법이 있다고 생각하지만, 방법을 기억할 수 없다. 아무도 아는가?


메타가 포함 된 마크 업을보고 동일한 HTML 구조와 클래스를 사용하고 탭이 있어야합니다
onetrickpony

고마워요. JS가 ID를 사용하여 비활성 탭을 숨기고 있다고 생각합니다. ID를 복제 할 수 없으므로 내 JS를 작성해야 할 수도 있습니다.
Jason Rhodes

답변:


13

다음은 매우 기본적인 예입니다.

/*
    Code assumes it will be in the theme functions.php file
    Update the enqueue path if using it elsewhere
*/
add_action( 'add_meta_boxes_post', 'add_post_metabox' );

function add_post_metabox() {
    wp_enqueue_script( 'mytabs', get_bloginfo( 'stylesheet_directory' ). '/mytabs.js', array( 'jquery-ui-tabs' ) );
    add_meta_box( 'examplebox' , __('Example box'), 'my_example_metabox', 'post', 'side', 'core'/*,array()*/);
}

function my_example_metabox() {
    ?>
    <div id="mytabs">
        <ul class="category-tabs">
            <li><a href="#frag1">Tab 1</a></li>
            <li><a href="#frag2">Tab 2</a></li>
            <li><a href="#frag3">Tab 3</a></li>
        </ul>
        <br class="clear" />
        <div id="frag1">
            <p>#1 - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
        </div>
        <div class="hidden" id="frag2">
            <p>#2 - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
        </div>
        <div class="hidden" id="frag3">
            <p>#3 - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
        </div>
    </div>
    <?php
}

큐에서 참조 된 mytabs.js의 jQuery

jQuery(document).ready(function($) {
    $("#mytabs .hidden").removeClass('hidden');
    $("#mytabs").tabs();
});

노트:

  • 플러그인 내부에서 사용 plugins_url( '/mytabs.js', __FILE__ )하면 get_bloginfo문자열 대신 문자열을 호출해야 합니다.
  • 각 탭의 앵커 링크는 예를 들어 참조하는 컨텐츠 요소의 ID와 일치해야합니다. frag1, frag2 등
  • 숨겨진 클래스는 첫 번째 컨텐츠 이후에 각 컨텐츠 DIV에 적용되므로 페이지로드시 숨겨 지지만 (페이지에서 잠깐 동안 점프하는 것을 볼 수 있음) 페이지로드 후 클래스가 제거됩니다. 그렇지 않으면 숨겨진 상태로 유지됩니다.
  • 예제에서 add_action( "add_meta_boxes_YOURTYPE", 'add_post_metabox' );사용한 포스트 유형을 반영하도록 상단 액션을 업데이트해야합니다 post.
  • 탭 LI 요소를 인라인으로 배치하는 기존 WordPress CSS를 사용하려면 측면에서 메타 박스를 렌더링해야합니다 (CSS를 처리하기 위해 항상 스타일 시트를로드 할 수 있습니다).

탭 스크립트를 구성하는 방법에 대한 자세한 내용은 여기를 참조하십시오.
http://docs.jquery.com/UI/Tabs

도움이 되길 바랍니다 ..


t31os, wp_enqueue_script를 다음과 같이 변경했습니다 : wp_enqueue_script ( 'mytabs', get_bloginfo ( 'template_directory'). mytabs.js를 테마의 루트에있는 / js / 폴더에 넣었지만 작동하지 않습니다.
Philip

1
@Philip - 코드가 작업 예는, .. 출력 소스를 확인 인큐 경로가 올바르게 생성되고 검증 .. (또는 모두 함께 출력 된 것으로)
t31os

실수를합니다 ... 혼란이있어 죄송합니다! 모든 것이 잘 작동합니다.
Philip

@Philip-문제가없고, 해를 끼치 지 않습니다 ..;)
t31os
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.