2014-11-20 2 views
1

저는 워드 프레스에서 새로운 사람입니다. 어쨌든 permalink에서 카테고리 ID를 얻으 려니? 나의 현재 고유 주소는 다음과 같습니다permalink에 구조 태그를 더 추가 하시겠습니까?

http:///example.com/%category%/%post_id%-%postname%.html 
http:///example.com/music/1-hello.html 

이제 내 음악 CATEGORY_ID이 CATEGORY_ID는 퍼머에 추가하는 방법이 무엇입니까? 내가 원하는 :

http:///example.com/2-music/1-hello.html 

답변

2

자신 만의 영구 링크 구조 탭을 만들어야합니다. 예 :

add_filter('post_link', 'cat_id_permalink', 10, 3); 
add_filter('post_type_link', 'cat_id_permalink', 10, 3); 

function cat_id_permalink($permalink, $post_id, $leavename) { 
    if (strpos($permalink, '%catid%') === FALSE) return $permalink; 

    // Get post 
    $post = get_post($post_id); 
    if (!$post) return $permalink; 

    // Get category ID 
    $category = end(get_the_category()); 
    $catid = $category->cat_ID; 

    return str_replace('%catid%', $catid, $permalink); 
} 

참고 :이 코드는 게시물이 한 범주에 나열된 경우에만 작동합니다. 게시물이 여러 범주 아래에 나열되어있을 경우 조금 더 많은 논리를 추가해야합니다.

이 코드는 functions.php 파일에 추가됩니다. WordPress 필터를 사용하면 핵심 파일을 변경하지 않고도 핵심 WordPress 코드의 기능을 수정하거나 확장하여 다음 WordPress 업데이트로 변경 사항을 잃을 위험이 없습니다.

처리 된 URL을 반환하기 전에 위 코드를 호출합니다 (및 post_type_link 필터 사용). 함수가 실행되면 새로 파싱 된 퍼머 링크 구조를 반환합니다.

// 게시물 코드를 가져 오면 원래의 permalink가 변경되지 않고 올바른 게시물 ID가 반환됩니다.

// 유효한 게시물 ID가있는 경우 // get category ID는 get_the_category()를 사용하여 범주 ID를 검색합니다. 참고 게시물은 여러 범주에있을 수 있으므로 get_the_category()는 범주 ID 배열을 검색합니다. end 함수는 배열의 마지막 요소를 반환합니다.

마지막으로 str_replace를 사용하여 % catid % 탭을 $ catid 변수로 바꾸고 새 퍼머 링크를 반환합니다.

+0

이 코드를 추가 할 위치를 알려주시겠습니까? options-permalink.php에 추가하려고했지만 작동하지 않는 것 같습니까? – Asamoa

+0

functions.php 파일에 코드를 추가하십시오. 위의 설명을 더 추가했습니다 :) – entreprenerds