有没有办法在图片标题中创建可引用的自动编号?

时间:2018-04-25 作者:Devin Curtis

我正在为那些将持续编辑和扩展页面的人建立一个wordpress网站。目前,每页最多有50幅图像,全部手动标记为“figure x.x”。他希望能够添加图像,并让页面自动对数字重新编号,这样他就不必每次添加一个数字时都更新所有的数字。我已经读到,你可以通过CSS来实现这一点,但他也希望在文本中依次更新对数字的引用。因此,如果我们在文本中有一段时间说,“参见图1.27”,并链接到图1.27,例如,如果图1.27变为1.28,它将发生变化。

这可能吗?通过我的搜索,我还没有找到任何人做过类似的事情,但是如果你知道一些可能有用的事情,请让我知道。

非常感谢你。

2 个回复
SO网友:WebElaine

如果图像总是链接的,而不是实际嵌入/包含在页面上,则可以这样做:

确定需要在哪种帖子类型上执行此操作。考虑创建一个特定的帖子类型,其中的数字总是会重新编号,这样您就不会在网站的其他部分重新编号,因为这些部分可能不需要重新编号。或者,考虑创建另一个页面模板,以便仅在使用特定模板时重新编号。

让作者始终链接到具有相同文本的图,即链接文本始终为“见图”或“见图”。返回并编辑现有链接,使其始终保持一致,并确保“见图”仅在要编号的链接中使用。

创建一个JavaScript,您只需在任何帖子类型或模板上排队即可。使用jQuery,您可以找到所有链接文本为“见图”的链接,并增加一个计数器,以便将链接文本替换为“见图1.1”、“见图1.2”,依此类推。

在这个网站上,JS有点超出范围,但基本上你需要选择包含文本“见图”(或你选择的文本)的所有链接(“a”元素),然后创建一个变量来保存你的数字,然后执行foreach循环,将链接文本替换为“见图1.x”和增量x。

SO网友:WebElaine

如果您想让实际的HTML引用正确的数字,下面是一般的方法。与JS类似,但更改了实际的HTML。

确定需要在哪种帖子类型上执行此操作。考虑创建一个特定的帖子类型,其中的数字总是会重新编号,这样您就不会在网站的其他部分重新编号,因为这些部分可能不需要重新编号。或者,考虑创建另一个页面模板,以便仅在使用特定模板时重新编号。

让作者始终链接到具有相同文本的图,即链接文本始终为“见图”或“见图”。返回并编辑现有链接,使其始终保持一致,并确保“见图”仅在要编号的链接中使用。

在中设置过滤器functions.php 负责编号。本例假设您正在使用一个名为“figurelist”的自定义帖子类型,但您可以将条件更改为仅在使用特定页面模板时运行。


// callback function to add number: 1.1, 1.2, etc.
function figure_count($matches) {
    static $i = 1;
    return \'see figure 1.\' . $i++ . \'<\';
}
// add a filter on the_content
add_filter(\'the_content\', \'wpse_301865_figure_numbers\', 10, 1);
function wpse_301865_figure_numbers($content) {
    // only make changes if this is the main query on a \'figurelist\' cpt
    if(is_singular(\'figurelist\') && is_main_query()) {
        // reduce any "see figure" links - change "see figure x.x" to "see figure"
        $content = preg_replace(\'/see figure (.*?).</\', \'see figure<\', $content);
        // now add new numbers
        $content = preg_replace_callback(\'/see figure</\', \'figure_count\', $content);
    }
}
因此,您必须再次小心大写,但可以调整preg\\u replace以匹配变量大小写。

结束