탐색 메뉴에 사용자 정의 게시물 유형 보관 페이지 링크를 추가하는 방법은 무엇입니까?


9

나는 이것을 알아낼 수 없다. 새로 만든 사용자 지정 게시물 형식 보관 페이지를 메뉴에 추가하는 확인란이나 기능이 비슷한 것 같습니다.

또한 페이지에있는 경우 링크가 활성화되어 있어야합니다. 이것은 아마도 불가능하지만 플러그인이 있습니까? 나를 사랑하기 위해 나는 그것을 찾을 수 없다 :(

Nav Menus에서 Custom Post Type Archives 라는 플러그인 만 찾았습니다. 실제로 아무것도하지 않지만 메뉴 에 대한 사용자 정의 링크를 추가하십시오. 활성화되지 않거나 매우 역동적이지 않습니다.

아마도 가장 쉬운 방법은 wp_nav_menu()내 링크를 수동으로 무시 하고 추가 한 다음 $_GET정보를 사용하여 "현재 활성 링크"를 제어하는 ​​것입니다.


스티븐의 답변을 분기 후,이 용액을 결국 : wordpress.org/support/topic/... 희망이 :) 미래에 누군가를하는 데 도움이
칼레 H. Väravas

답변:


1

이것은 작동하지 않아야한다고 생각되는 방법 중 하나입니다 (테스트되지는 않았지만).

//Hook on to the filter for the (custom) main menu
// 'wp_list_pages' filter is a fallback, when a custom menu isn't being used 
add_filter( 'wp_list_pages', 'new_nav_menu_items' );
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items' );
//Can also hook into a specific menu...
//add_filter( 'wp_nav_menu_{$menu->slug}_items', 'new_nav_menu_items' );

function new_nav_menu_items($items) {
    global $wp_query;
    $class ='';

    //Checks if we are viewing CPT 'myposttype', if so give it the 'active' class.
    if(isset($wp_query->query_vars['post_type'])&& $wp_query->query_vars['post_type']=='myposttype') 
        $class = 'current_page_item';

    //This generates the url of the CPT archive page
    $url = add_query_arg('post_type','myposttype',site_url());

    $myitem = '<li class="'.$class.'"><a href="'.$url.'">My Custom Post Type</a></li>';

    $items = $items . $myitem;
    return $items;
}

이것은 나에게 보이지 않는 해결책 중 가장 깨끗한 것처럼 보이지만 다른 방법은 모르겠습니다. 있다면,보고 싶습니다!

마지막으로, 커스텀 아이템이 링크되는 링크 URL은 '꽤'가 아닙니다. 그러나 CPT의 슬러그를 새로 만들면 커스터마이징 할 수 있습니다 (커스텀 퍼머 링크가 사용되고 있다고 가정합니다 ....)


답변 주셔서 감사합니다. 이것은 기본적으로 작동하는 것 같습니다. 그러나 URL 형식을 조정해야합니다. 그리고 아마도 당신은 WP에 대해 더 많이 알기를 바랐습니다. 따라서 현재 URL은 example.com/?post_type=myposttype이지만 example.com/myposttype이어야합니다. 아마도 간단하게 $url = site_url() . 'myposttype';? 그리고 현재 활성화 된 수업을 포함하여 수업은 포함되지 않습니다.
Kalle H. Väravas

아 죄송합니다 $class = '';. 그러나 일반 클래스를 동적으로 얻을 수 없으며 현재 활성 링크를 작동시키는 방법은 무엇입니까?
Kalle H. Väravas

오 더블 죄송합니다 $wp_query->query_vars['post_type']=='myposttype'. 기본적으로 작동합니다. 이것은 더 역동적 인 솔루션을위한 좋은 기초입니다. 감사합니다!
Kalle H. Väravas

2

WordPress 4.4 (2015 년 12 월)부터 사용자 지정 게시물 형식 보관 링크는 이제 타사 코드 나 플러그인없이 WordPress 코어에서 공식적으로 지원됩니다 .

자세한 내용은 Trac # 16075 티켓 전체를 참조하거나 추가 레이블 요약을 보려면 Make WordPress Core 게시물을 참조하십시오 .

활성화하려면 새로운 내장 된 아카이브 메뉴 링크에 대한 지원, 사용자 정의 포스트 유형이 비 - falsey (즉, 참) 값에 등록 has_archive, publicly_queryableshow_in_nav_menus:

add_action( 'init', function () {
    register_post_type( 'movies',
        array(
            'labels' => array(
                'name' => __( 'Movies' ),
                'singular_name' => __( 'Movie' ),
                'archives' => __( 'Movies' ),
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array(
                'slug' => 'movies',
            ),
        )
    );
});

이러한 추가로 모양> 메뉴 관리 화면 에 새 메타 박스가 표시됩니다.

게시물 유형 보관 링크는 게시물 유형 메타 박스의 '모두보기'탭에서 찾을 수 있습니다.

워드 프레스 사용자 정의 게시물 유형 아카이브 탐색 메뉴 링크

참고 : "화면 옵션"드로어를 토글하고 메뉴 화면에 "Post Type Archives"이름 (예 : 영화)이 선택되어 있는지 확인해야합니다.

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