2013-07-09 2 views
1

내 WordPress 사이트의 포트폴리오는 입니다. 포트폴리오 섹션과 항목은 내가 만든 맞춤 플러그인을 통해 관리됩니다. www.mysite.com/portfolio/my-cool-photo과 같은 개별 항목에 액세스하고 ?portfolio_item=my-cool-photo과 같은 쿼리 문자열에 "my-cool-photo"를 넣고 코드에서 읽을 수 있도록하고 싶습니다.WordPress에 사용자 정의 다시 쓰기 규칙 추가

function add_rewrite_rules($wp_rewrite) { 
    $new_rules = array(
     'portfolio/(.+)/?$' => 'index.php?&portfolio_item=$1' 
    ); 

    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; 
} 
add_action('generate_rewrite_rules', 'add_rewrite_rules'); 

function query_vars($public_query_vars) { 
    $public_query_vars[] = "portfolio_item"; 

    return $public_query_vars; 
} 
add_filter('query_vars', 'query_vars'); 

이 배열 OK로 재 작성 규칙을 추가 플러그인 활성화 PHP 파일에서

나는이 코드를 가지고있다. 문제는 아무것도하지 않는 것입니다. 내가 www.mysite.com/portfolio/testing/에 갈 때 나는 "다소 창피하다, 안 그래?" WordPress 404 오류 페이지. 분명히 리디렉션 쿼리 문자열이 작성되지 않도록, 작동하지 않는,하지만 그냥 내가 이런 짓을 확인 :

global $wp_query, $wp_rewrite; 
if ($wp_rewrite->using_permalinks()) { 
    $searchKey = $wp_query->query_vars['portfolio_item']; 
} else { 
    $searchKey = $_GET['portfolio_item']; 
} 

을 ... 과연 쿼리 문자열이 전달지고 있지 않습니다.

내가 누락 된 자료가 있습니까?

http://codex.wordpress.org/Function_Reference/flush_rewrite_rules

당신은 $hard 매개 변수 true로 세척하도록 선택할 수 있습니다, 그리고 당신은 당신의 재 작성 규칙을 볼 수 있어야합니다 : 당신은 워드 프레스가 규칙을 다시 업데이트 한 후

답변

3

, 당신이 그들을 플러시 할 필요가 .htaccess 파일.

+0

로 실행됩니다. 그게 아무것도 영향을 미치지 않았고 내 htaccess 파일은 여전히 ​​기본 WordPress htaccess 파일입니다. – Gavin

+1

대신에'add_rewrite_rule' 함수를 사용해 볼 수 있습니다 : http://codex.wordpress.org/Rewrite_API/add_rewrite_rule – Ygg

+0

재 작성이 실제로'add_rewrite_rule'을 사용하고 있다고 생각합니다. 문제는 WordPress가 mysite.com/portfolio/abcdefg/를/portfolio/page의 일부로 인식하지 못하기 때문에 "이건 다소 창피합니다. 그렇지 않습니까?" 오류 화면. 아직 포트폴리오 페이지를로드해야한다는 것을 "알리려면"해야 할 일이 있습니까? – Gavin

0

다음은 URL 코드를 다시 작성하는 예입니다. 바라기를 이것은 사용자를 도울 것입니다. 마지막에`; http://www.domainname.com/test-page?urltags=ABCD 같은이 URL에

내가`$ wp_rewrite-> flush_rewrite_rules (true)를 추가 한`add_rewrite_rules` 함수에서 http://www.domainname.com/test-page/ABCD

<?php 
function add_my_rule() {  
    global $wp; 
    $wp->add_query_var('tags'); 
    add_rewrite_rule('test-page/([^/]*)','index.php?pagename=test-page&urltags=$matches[1]','top'); 
} 
function add_my_tags() { 
    add_rewrite_tag('%urltags%', '([^&]+)'); 
} 
add_action('init', 'add_my_rule'); 
add_action('init', 'add_my_tags', 10, 0); 
?>