2012-05-25 3 views
0

또한 질문에 대한 Ajax permalink in wordpress Pluto ThemeURL을 Ajax 버전으로 리디렉션하는 가장 좋은 해결책은 무엇입니까?

그래서 완전히 아약스 워드 프레스 테마입니다, 구글에서 나오는 모든 URL은 사용자 버전의 웹 사이트 만의 '아래'버전이 아니다.

예 : 링크가 구글에 나타나는 : www.thaiorchid.be/menus/ (이상한 검은 페이지) 사용자의 웹 페이지에 비해 : www.thaiorchid.be/#menu-item-21 난

가장 좋은 방법은 자동으로 모든 페이지를 리디렉션하는 것입니다 (예 : 하나/메뉴 - 항목 -18).

+0

두 가지 질문 1. AJAX 요청에 렌더링 된 부분보기를 렌더링하는 데 사용되는 템플릿 파일에 대한 액세스 권한이 있습니까? 2. 예를 들면. 'menu-item-21' - 21은 게시물/페이지의 ID입니까? – polarblau

+0

1. 예, 모든 것에 액세스했습니다. 그리고 2. 안타깝게도 아니오 (메뉴 게시물은 11 번입니다. (Ajax URL과 비교 : # menu-item-21)). 감사합니다 – JonathanS

답변

0

불행히도 저는 현재 다음을 테스트 할 수 없지만 표준 Wordpress 메뉴가이 테마 내에서 사용된다면이 기능이 작동해야한다고 생각합니다.

// functions.php 
function get_menu_id_for_post($post_id) { 
    global $wpdb; 
    $query = $wpdb->prepare(
    " 
     SELECT post_id 
     FROM $wpdb->postmeta 
     WHERE meta_key = '_menu_item_object_id' 
     AND meta_value = %s 
    ", 
    $post_id 
); 
    $menu_id = $wpdb->get_var($query); 
    return $menu_id; 
} 

function is_ajax_request() { 
    return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
      strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 
} 

// partial template, right on the top: 
<?php if (!is_ajax_request()): ?> 
    <script type="text/javascript"> 
    window.location = "http://www.thaiorchid.be/#menu-item-<?php echo get_menu_id_for_post($post->ID) ?>"; 
    </script> 
<?php endif; ?> 

는 현재 포스트 나 페이지의 ID에 따라 올바른 메뉴 ID를 확인한 다음 현재 페이지로 AJAX를 통해로드되지 않은 경우 자바 스크립트를 사용하여 리디렉션합니다.

또 다시 테스트 할 수는 없지만 계속 진행하는 데 도움이 될 수 있습니다.

+0

안녕하세요 @ polarblau 다시 한 번 감사드립니다. 멋진 솔루션처럼 보입니다! 나는 그것을 시도했지만 여전히 같은 결과로 ... 좀 더 시도 할 것이다. – JonathanS

+0

템플릿에 두 번째 비트가 있습니까? 예제에 대한 링크를 게시 할 수 있습니까? – polarblau

+0

다시 도움 주셔서 감사합니다. 페이지를 편집했습니다.PHP 파일을 추가하고 코드의 두 번째 부분을 추가했지만 더 이상 여는 페이지가 없어서 다시 사용했습니다 ... 그러나이 또한 page.php 코드의 맨 위에 작성되어 도움이 될 수 있습니까? /** * \t 현재 페이지 개체 가져 오기 **/ $ page = get_page ($ post-> ID); /** * \t 현재 페이지 ID 가져 오기 **/ $ current_page_id = ''; (isset ($ page-> ID)) } – JonathanS

0

이전 버전과의 호환성을 위해 올바른 방식으로 링크를 작성하지만 편안 무엇을 적 관계/클래스를 추가로 : 나는 '어떤 경우에는

$('a[rel=ajax]').click(function(e) { 
    //do whatever 
    e.preventDefault(); 
}); 

: JQuery와에서 그런

<a href="http://example.com/path/to/file.html" rel="ajax" >link</a> 

rel = "ajax" 또는 class = "ajax"을 추가하지 않고 내 웹 사이트의 도메인을 가리키는 링크를 찾았습니다.

$('a[href^="http://example.com"]').click(function(e) { 
    //do whatever 
    e.preventDefault(); 
}); 

보통 내 이 초기 링크에 있던 것과 동일한 주소로 ajax 요청을합니다. ? ajax = 1 매개 변수를 추가하여 템플릿에서 머리글/바닥 글 출력 (AHAH 사용시) 또는 응답 json_encode (JSON 출력용)을 건너 뛸 수 있습니다.

+0

고마워요 @ Mihai,하지만 링크가 나에 의해 작성된 것이 아니라 자동으로 워드 프레스에서 생성 된 (그 페이지 또는 게시물에서 링크) 엉덩이 _rel = "아약스"_ 그런 종류의 링크에 어쩌면 엉덩이하는 방법은 무엇입니까? – JonathanS

+0

다음과 같은 의미입니다. ** rel = "ajax"또는 class = "ajax"를 추가하지 않고 웹 사이트 **의 도메인을 가리키는 링크를 찾은 경우도 있습니다. ** –

+0

$ ('a [href^= "http : // example.com"]')는 ** "http : // example.com"으로 시작하는 href 속성 **이있는 태그 만 선택합니다. rel = "ajax"또는 class = "ajax"는 필요 없습니다. –

관련 문제