2012-06-12 2 views
0

wp_nav_menu와 permalink 설정을 사용하여 wordpress 사이트에서 새 페이지를로드하기 위해 ajax를 사용하려고합니다 : /wp-admin/admin-ajax.php?post_name=%postname%/내가 그것을 제대로 처리 할 수있는 admin-ajax에 대한 요청을 라우팅하려면 (Wordpress 문서에 따라) 그러나 wordpress는 내 permalink를 무시하고 기본 링크 설정을 고수합니다.Permalinks to admin-ajax.php

이 작업을 수행하는 올바른 방법입니까 아니면 .htaccess 파일을 다시 작성하는 것이 좋을까요? 그러면이 문제가 wp의 새 버전으로 업데이트 될 수 있습니까?

미리 답변 해 주셔서 감사합니다.

답변

1

Chris에서 CSS Tricks에는 훌륭한 AJAX 페이지로드 자습서가 있습니다. JavaScript를 지원하지 않는 구형 브라우저에서 여전히 작동하는 그의 솔루션에 대한 최상의 정보입니다.

당신이 normaly, 사이트 메뉴 ID는 아약스 부하에 원하는 메뉴 링크를 감싸는 몇 가지 태그를 추가해야합니다 것처럼 스크립트

<script type="text/javascript"> 
/* 
* Your navigation bar, can be "document" or body if you want to 
* apply to every link on your site 
*/ 
var $navigation = $("#site-menu"); 

//Your main content that will be replaces 
var body = "#page-body"; 
var $body = $(body); 

$navigation.delegate("a", "click", function() { 
    window.location.hash = $(this).attr("href"); 
    return false; 
}); 

$(window).bind('hashchange', function() { 
    var newHash = window.location.hash.substring(1); 
    if(newHash) { 
     $body.fadeOut(200, function() { 
      $body.hide().load(newHash + " " + body, function() { 
       $body.fadeIn(200, function() { 
       }); 
      }); 
     }); 
    }; 
}); 

$(window).trigger('hashchange'); 
</script> 

메뉴

가 메뉴를 추가합니다. $ 탐색에서

<div id="site-menu"> 
    <?php wp_nav_menu(); ?> 
</div> 

세부

모든 링크는 윈도우 URL 해시를 업데이트 이벤트가 그들에게 추가 클릭을해야합니다. 창은 해시 변경을 수신하고 해시 값을 사용하여 $ body html을 다시로드하라는 AJAX 요청을합니다.

장점

  • 역사 (뒤로 & 앞으로) 네비게이션 작동합니다 :
  • 같은 사이트가 자바 스크립트와하지 않는 브라우저를 지원하는 브라우저와 함께 작동합니다;
  • URL을 복사하면 스크립트가 올바른 페이지를로드합니다. 우리가 위임 기능을 사용하고 있기 때문에
  • 아약스 부하의 결과를 통해 추가 된 링크는 또한 당신은 더 이상 앵커를 사용할 수 없습니다 클릭 이벤트가
    • 을 그들에게 추가

    단점해야합니다 자세한 내용과 예를 들어 사이트

에 참조 : http://css-tricks.com/video-screencasts/85-best-practices-dynamic-content/

관련 문제