对wpautop()中的节和块级元素进行编号;WordPress作为CMS用于长格式书写;

时间:2013-03-09 作者:Ryan Schram

我开始学习如何为Wordpress编写插件。我对使用WP作为长论文(6000-9000字或更多)的CMS感兴趣。我的问题是我所说的Kindle问题,即如何可靠地解决未经处理的文档的不同部分,这些文档可以在各种屏幕/设备上阅读,并且在每种情况下会以不同的方式回流。如果我在电子阅读器或浏览器上引用一本电子书,很难引用特定的段落,也很难知道我的读者能够按照它找到确切的文本位置,因为没有绝对的“页码”

一种可能的解决方案是在文本中放置HTML锚。有没有办法让Wordpress自动做到这一点?更好的是,Wordpress是否可以将元素视为SGML元素的开头,然后自动为每个标题、每个子标题以及每个段落或块“封闭”生成按层次编号的锚定。我正在想办法做LaTeX对{section}标记所做的事情。

这样做了吗?该过滤器具体应用于何处?Adam Brown 说你可以使用1500多个钩子!这非常令人惊讶,但也令人望而生畏。

谢谢你的帮助。

干杯

瑞安

http://rschram.org/

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

您可能可以通过打开某种过滤器来实现这一点the_content.

下面是一个快速而肮脏的示例,它可以找到<p> 并插入一个命名的锚,然后在内容顶部添加指向每个锚的链接列表。

查看Shortcode API 同样,也可以通过添加自己的短代码来添加包含文本的任意部分,如[section id="something"].

class InsertAnchors {
    protected $count = 0;
    protected $links = \'\';
    public function build( $pattern, $content ) {
        $this->count = 0;
        $this->links = \'\';
        $content = preg_replace_callback( $pattern, array( $this, \'_replacer\' ), $content );
        return \'<p>\' . $this->links . \'</p>\' . $content;
    }
    public function _replacer( $matches ) {
        $this->count++;
        $this->links .= \'<a href="#section_\' . $this->count . \'">Section \' . $this->count . \'</a><br>\';
        return \'<p><a name="section_\' . $this->count . \'"></a>\';
    }
}

function anchors_content_filter( $content ){
    $insert = new InsertAnchors();
    return $insert->build( \'~<p>~\', $content );
}
add_filter( \'the_content\', \'anchors_content_filter\', 100 );

结束

相关推荐

TinyMCE buttons broken

由于某些原因,我的TinyMCE按钮完全错位,并且有错误的background-position (见下图):我已尝试下载Wordpress 3.5的新安装,并用其中的以下文件替换了我的文件:/wp-includes/css/editor.min.css /wp-includes/images/wpicons.png 然而,一切都没有改变。我也没有编辑管理样式表。