Loading

wordpress 编写插件实现自动汇总超链接

背景

写长篇文章时,文章内容可能会引用了很多外站的超链接。事后我再来翻阅文章,找到想要的超链很吃力。

尝试过在插件商城寻找现有的插件,都不太令人满意。

因为需求其实很简单:将文章内容中出现过的超链接,汇总展示在文章的末尾,类似论文的引用文献。

实施

将如下代码,放在 wordpress 的插件目录中:html/wp-content/plugins/link-summary.php

<?php
/*
Plugin Name: 超链接汇总插件
Plugin URI: https://your-plugin-uri.com/
Description: 分析文章内容中的超链接,并将它们汇总展示在文章末尾
Version: 1.0
Author: PengYinwei
Author URI: https://your-website.com/
License: GPL2
*/

// 在文章内容末尾添加超链接汇总
function append_links_to_content($content) {
    // 获取文章内容
    $post_content = get_the_content();

    // 使用正则表达式匹配文章中的超链接
    preg_match_all('/<a\s+.*?href=[\'"](.*?)[\'"].*?>(.*?)<\/a>/', $post_content, $matches, PREG_SET_ORDER);

    // 如果匹配到超链接
    if (!empty($matches)) {
        // 去重
        $unique_links = array();
        foreach ($matches as $match) {
            $link_url = $match[1];
            $link_text = $match[2];

            // 使用链接文本作为唯一标识符,避免重复链接
            if (!in_array($link_text, $unique_links)) {
                $unique_links[] = $link_text;

                $link_summary .= '<li><a href="' . $link_url . '">' . $link_text . '</a></li>';
            }
        }

        // 创建超链接汇总
        if (!empty($unique_links)) {
            $link_summary = '<h2>引用链接</h2>';
            $link_summary .= '<ul>';

            foreach ($unique_links as $link_text) {
                $link_summary .= '<li><a href="' . $link_url . '">' . $link_text . '</a></li>';
            }

            $link_summary .= '</ul>';

            // 输出 h2 引用链接 前加一个空行
            $link_summary = '<br>' . $link_summary;

            // 将超链接汇总添加到文章内容末尾
            $content .= $link_summary;
        }
    }

    return $content;
}

// 将超链接汇总添加到文章内容末尾
add_filter('the_content', 'append_links_to_content');

在 wordpress 控制台启用插件

image

查看效果

image

posted @ 2023-10-07 14:48  pengyinwei  阅读(12)  评论(0编辑  收藏  举报