将锚标签附加到下一帖子

时间:2013-05-27 作者:James

我正在制作一个单页wordpress网站。网站上有一个部分通过分类帖子显示内容。一次只显示一篇文章,我使用以下默认代码显示下一个/上一个链接:

<div class="alignleft"><?php next_posts_link(\'&laquo; Next Recipe\') ?></div>
<div class="alignright"><?php previous_posts_link(\'Previous Recipe &raquo;\') ?></div>
单击上一篇文章时,它会正确加载上一篇文章,但由于这是一个单页网站,刷新后它会转到页面顶部。

当点击该链接时,有没有办法使其刷新同一位置的页面,或者达到我想要的目标?更好的是,有没有一种方法可以使用AJAX进行页面刷新?我在谷歌上爬网了,什么也没找到。

我想这是相似的:http://www.problogdesign.com/wordpress/load-next-wordpress-posts-with-ajax/, 然而,我还不能用我的自定义主题执行它。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您可以更改的链接next_post_linkprevious_post_link 使用过滤器。

function alter_npppl_wpse_100919($link) {
  return preg_replace(\'/href="([^"]+)"/\',\'href="$1#something"\',$link);
}
add_filter(\'next_post_link\',\'alter_npppl_wpse_100919\');
add_filter(\'previous_post_link\',\'alter_npppl_wpse_100919\');
您获得的URL将是默认URL plus#content. 如果您的站点正在生成/page/2/ 那么最终的URL将是/page/2/#content. 如果您不需要尾部斜杠-,在#-- 您必须通过回调传递匹配。

function alter_npppl_noslash_cb_wpse_100919($match) {
  return \'href="\'.untrailingslashit($match[1]).\'#content"\';
}
function alter_npppl_v2_wpse_100919($link) {
  return preg_replace_callback(\'/href="([^"]+)"/\',\'alter_npppl_noslash_cb_wpse_100919\',$link);
}
function alter_npppl_wpse_100919($link) {
  return preg_replace(\'/href="([^"]+)"/\',\'href="$1#something"\',$link);
}
add_filter(\'next_post_link\',\'alter_npppl_v2_wpse_100919\');
add_filter(\'previous_post_link\',\'alter_npppl_v2_wpse_100919\');
如果你的网站是使用尾部斜杠,我不会删除它。如果这样做的话,很可能会导致不必要的重定向。

#something 可以是任何id 在页面上。如果你有<div id="content" 然后添加#content 应该是因为div 在页面加载时滚动到视图。

结束

相关推荐

我的页面上未显示AJAX Ready状态更改

我一直在尝试获得一个独立的网页,我使用它重建为可以在我的博客中访问的页面。根据建议,我为这个页面创建了一个新模板,并在那里完成了我的所有工作。页面正确地记住了$_会话,php运行良好。在此页面上有下拉框,用于更新其他下拉框。如果我手动更新,一切都会很好。当我尝试引入我的ajax调用时,事情变得不稳定。目前正在更新。php只是回应“你好”。<script> function changeFn( ) { var newOpt = document.createElement(\