2017-01-05 1 views
0

나누기 :워드 프레스 사용자 정의 포스트 영구 링크는 일반 페이지 내가 내 게시물에 대한 다음과 같은 영구 링크 구조를 달성하고자 일하고 있어요 프로젝트에 대한

domain.com/special/my-post-slug을

special은 사용자 지정 분류입니다.

내가 무슨 짓을 :

  • 이 설정에 갔다> 영구 링크
  • 사용자 지정 옵션을 선택하고이로 변환 :/% 특별 %/% postname %/
  • 은 다음과 워드 프레스 후크에 걸려 이 같은 :이 코드는 잘 작동하지만,
<?php 

// in functions.php 


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

function specials_permalink($permalink, $post_id, $leavename) { 

    if (strpos($permalink, '%specials%') === FALSE) { 
     return $permalink; 
    } 

    $post = get_post($post_id); 

    if (!$post) { 
     return $permalink; 
    } 

    $terms = wp_get_object_terms($post->ID, 'specials'); 

    if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) { 
     $taxonomy_slug = $terms[0]->slug; 
    } else { 
     $categories = wp_get_post_categories($post_id->ID, array('fields' => 'all')); 

     if(isset($categories[0])) { 
      $taxonomy_slug = $categories[0]->slug; 
     } else { 
      $taxonomy_slug = 'general'; 
     } 
    } 

    $permalink = str_replace('%specials%', $taxonomy_slug, $permalink); 

    return $permalink; 
} 

나는 fo를 영구 링크 구조에 스페셜을 추가하기 때문에 r 내 게시물, 내 페이지가 더 이상로드되지 않습니다. 그들은 모두 404가됩니다. 퍼멀 링크 구조에서 % specials %을 제거하자마자 다시 작동합니다.

요청 :

FR/내-슬러그

쿼리 문자열 :

디버깅 동안 나는 다음과 같이 워드 프레스 내 URL을 일치 발견

LANG = FR & 스페셜 = 내 -slug

일치하는 다시 쓰기 규칙 :

,에게

는 (FR | NL | EN)/([^ /] +)/$

일치 재 작성 검색어 :

LANG = FR & 스페셜 = 내-슬러그하지만이

가되게합니다 '특별'의 '페이지 이름' 이미 URL을 다시 매핑하고 사용자 지정 다시 쓰기 규칙을 추가하는 등의 시도를했지만 어떤 해결책도 찾을 수 없습니다. 가장 이상한 부분은 WP Codex에 따르면 영구 링크 구조는 페이지가 아닌 게시물 및 아카이브 페이지에만 적용된다는 것입니다. 페이지에로드 할 때 링크에 연결되는 함수가 시작되지 않습니다. 그러나 Wordpress는 내 페이지가 스페셜이라고 생각합니다.

가능한 한 많은 정보를 추가하려고했지만, 누락 된 내용이 있으면 간청하십시오.

답변

-1

설정 -> 퍼머 링크에서 퍼머 링크 구조를 변경하면 모든 포스트 유형에 대해 변경됩니다 (제 생각 엔).

나의 제안 :는 기본 (/%postname%/)에서와 같이 영구 링크 구조를두고 필터 기능에 포스트 유형 검사를 추가

function specials_permalink($permalink, $post_id, $leavename) { 

    if ('post' != get_post_type($post_id)) { 
     return $permalink; 
    } 

    // rest of your code 

} 
+0

나는 나의 URL이 어떤 재 일치하지 않는 그렇게한다면 규칙. –

관련 문제