0

wordpress PlutoテーマのAjaxパーマリンクに関するさらなる質問

したがって、これは完全な Ajax Wordpress テーマであり、Google に表示されるすべての URL は、ユーザー バージョンの Web サイトではなく、その「下にある」バージョンのものです。

例: Google に表示されるリンク: www.thaiorchid.be/menus/ (奇妙な黒いページ) ユーザーの Web ページと比較: www.thaiorchid.be/#menu-item-21

すべてのページを自動的にリダイレクトして (1 つの /menus を 1 つの /#menu-item-21 に) 少なくとも見栄えのするものにするための最良の方法を探していますが、何が最善の解決策でしょうか?

4

2 に答える 2

0

下位互換性のために、リンクを正しい方法で記述しますが、リレーション/クラスを追加してください:

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

次にjqueryから:

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

場合によっては、rel="ajax"またはclass="ajax"の追加をスキップして、自分の Web サイトのドメインに戻るリンクを探しました。

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

通常、最初のリンクにあったのとまったく同じアドレスに ajax get リクエストを作成したメソッドは何でもします。パラメーター?ajax=1を追加しただけなので、テンプレートはヘッダー/フッターの出力をスキップしたり (AHAH を使用した場合)、応答を json_encode したりできます (JSON 出力の場合)。

于 2012-05-25T13:20:03.813 に答える
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 経由で読み込まれていない場合は Javascript を使用してリダイレクトされます。

繰り返しますが、今はこれをテストすることはまったくできませんが、続行するのに役立つかもしれません.

于 2012-05-25T19:25:12.437 に答える