0

关于wordpress Pluto Theme中Ajax永久链接的更多问题

所以它是一个完全的 Ajax Wordpress 主题,所有出现在 Google 中的 URL 都不是来自用户版本的网站,而是它的“底层”版本。

示例:Google 中出现的链接:www.thaiorchid.be/menus/(奇怪的黑页) 对比用户网页:www.thaiorchid.be/#menu-item-21

我正在寻找自动将所有页面(例如一个 /menus 重定向到一个 /#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",只是寻找指向我网站域的链接:

$('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 回答