关于Ajax permalink in wordpress Pluto Theme
的进一步问题所以这是一个完全的Ajax Wordpress主题,Google中出现的所有网址都不是来自用户版本网站,而是来自它的“底层”版本。
实施例: 链接出现在谷歌:www.thaiorchid.be / menus /(奇怪的黑页)与用户网页相比:www.thaiorchid.be/#menu-item-21
我正在寻找自动重定向所有页面的最佳方式(例如一个/菜单到一个/#menu-item-21)至少有一些可呈现的东西,任何想法什么是最好的解决方案?
答案 0 :(得分: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输出)。
答案 1 :(得分: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,然后使用Javascript重定向,如果当前页面未通过AJAX加载。
同样,我现在根本无法测试,但也许它可以帮助你继续。