使帖子页面中的段落自动化,以具有唯一的锚点链接

时间:2012-12-01 作者:davebowker

我有这样一个想法,可以链接到帖子中的一段。它将适用于the_content() 在自动放置锚定标记的帖子页面上,如下所示:<a href="#p1"></a> 其中“1”是第一段,它将为后续每一段递增,例如p2、p3、p4。。。

有人想试试吗?也许是函数中的某些东西。php?

谢谢

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

我想应该是<a name="p1"> 围绕段落,链接到以下段落:<a href="#p1">.

如果您正试图实现这一点(以前称为命名锚),那么这种技术在HTML 5中是无效的。您可以改为链接到id 在页面中,请记住这一点。

$count = 0;
function auto_id_p_cb($matches) {
  var_dump($matches);
  global $count;
  $count++;
  $ret = \'<p id="p_\'.$count.\'"\';
  if (!empty($matches[1])) $ret .= $matches[1];
  $ret .= \'>\';
  return $ret;
}
function auto_id_p($content){
  $content = preg_replace_callback(\'/<p([^>]*)>/\',\'auto_id_p_cb\',$content);
  return $content;
}
add_filter(\'the_content\',\'auto_id_p\',1000);
测试最少,但它确实保留了<p> 标签。我相信它会复制id 如果在<p> 所以要小心。更多地将其视为“概念证明”。

如果你还做什么,用实际<a> 标签,您应该能够适应它。

SO网友:Brent

听起来像是Jquery的工作。

Jquery如下所示:

var i = 0;
$(\'.entry p\').each(function(){
   i++;
   $(this).attr(\'id\', \'p\'+i); //labels the paragraph tags with unique ids.
   $(\'.entry-anchors\').append(\'<a href="#p\'+i+\'">\'+i+\'</a>\');

});
然后添加<div class="entry-anchors"></div> 希望这些链接显示在模板中的任何位置。或者您甚至可以通过Jquery动态添加它,例如:

$(\'.entry\').before(\'<div class="entry-anchors"></div>\');
当然,在jquery中为其赋值之前,您需要确保声明“entry anchors”div。

结束