下面给出的插件代码,帮助你实现将 IPFS 分布式文件系统集成到 WordPress,并实现文件分享和图床功能。该插件实现的核心功能包括:
- 在文章编辑页面添加侧边栏元数据输入框
允许用户输入 IPFS 的 CID(例如QmNvT9MEHZCvLcJGHc763Jw5unKVNb7b1FHRHrD7uwNVfT
)和文件名(例如xxxx.pdf
)。 - 保存输入的元数据
使用save_post
钩子保存用户输入的 CID 和文件名。 - 前端展示文件链接
当文章中包含了 IPFS 配置元数据时,自动在文章内容或指定位置输出分享链接,链接的格式为:https://www.dreamlink.cloud/explorer?cid=CID值&name=文件名
你可以根据下面的代码自定义和扩展更多功能。
插件代码示例
将下面代码保存为 ipfs-integration.php
并放在 WordPress 的插件目录 wp-content/plugins/
ipfs-integration/ 下,然后在后台激活即可使用。
<?php
/*
Plugin Name: IPFS分布式文件分享与图床插件
Description: 将IPFS分布式文件系统集成到WordPress,并提供分布式文件分享和图床功能。在文章编辑时,可输入IPFS的CID和文件名,生成对应的分享链接。
Version: 1.0
Author: Steper
*/
// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* 在文章编辑页面添加一个侧边栏元数据框,用于输入IPFS CID和文件名
*/
function ipfs_add_meta_box() {
add_meta_box(
'ipfs_meta_box', // Unique ID
'IPFS 配置', // Title
'ipfs_meta_box_callback', // Callback function
'post', // Screen: 这里设置为 post 类型,如果需要支持其他类型,请调整
'side', // Context
'default' // Priority
);
}
add_action( 'add_meta_boxes', 'ipfs_add_meta_box' );
/**
* 渲染元数据框内容
*
* @param WP_Post
post ) {
// 添加安全字段,防止CSRF攻击
wp_nonce_field( 'ipfs_save_meta_box_data', 'ipfs_meta_box_nonce' );
// 获取现有值(如果有的话)
post->ID, '_ipfs_cid', true );
post->ID, '_ipfs_filename', true );
?>
<p>
<label for="ipfs_cid"><strong>IPFS CID地址</strong></label><br>
<input type="text" id="ipfs_cid" name="ipfs_cid" value="<?php echo esc_attr(
ipfs_filename ); ?>" style="width: 100%;" placeholder="例如:xxxx.pdf">
</p>
<?php
}
/**
* 保存元数据框中输入的数据
*
* @param int
post_id ) {
// 检查 nonce 是否设置
if ( ! isset(
_POST['ipfs_meta_box_nonce'], 'ipfs_save_meta_box_data' ) ) {
return;
}
// 如果是自动保存,直接返回
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// 检查用户权限
if ( isset(
_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page',
post_id ) ) {
return;
}
}
// 存储或更新IPFS CID
if ( isset(
ipfs_cid = sanitize_text_field(
post_id, '_ipfs_cid',
_POST['ipfs_filename'] ) ) {
_POST['ipfs_filename'] );
update_post_meta(
ipfs_filename );
}
}
add_action( 'save_post', 'ipfs_save_meta_box_data' );
/**
* 在文章内容前/后追加生成的IPFS分享链接
*
* 这里我们通过过滤器输出IPFS链接,你也可以灵活调整位置和展示方式或者使用短代码
*/
function ipfs_append_share_link(
post;
post->ID, '_ipfs_cid', true );
post->ID, '_ipfs_filename', true );
if ( ! empty(
ipfs_filename ) ) {
ipfs_cid ) . "&name=" . urlencode(
link_html = '<div class="ipfs-share-link" style="margin-top:20px; padding:10px; border:1px solid #ddd;">';
url ) . '" target="_blank">' . esc_html(
link_html .= '</div>';
// 这里我们选择将分享链接追加到文章末尾
link_html;
}
}
return
post;
post->ID, '_ipfs_cid', true );
post->ID, '_ipfs_filename', true );
if ( ! empty(
ipfs_filename ) ) {
ipfs_cid ) . "&name=" . urlencode(
url ) . '" target="_blank">' . esc_html( $url ) . '</a></div>';
}
return '';
}
add_shortcode( 'ipfs_share_link', 'ipfs_share_link_shortcode' );
使用说明
- 安装和激活插件
- 将上述代码保存为
ipfs-integration.php
,放入wp-content/plugins/ipfs-integration
文件夹中。 - 进入 WordPress 后台 → 插件菜单,启用 IPFS分布式文件分享与图床插件。
- 将上述代码保存为
- 配置文章中的IPFS链接
- 打开或创建一个文章,在右侧边栏会看到 “IPFS 配置” 元数据框。
- 在输入框中填入 IPFS 的 CID(例如
QmNvT9MEHZCvLcJGHc763Jw5unKVNb7b1FHRHrD7uwNVfT
)和对应的文件名(例如xxxx.pdf
)。 - 保存或更新文章。
- 前端效果展示
- 每当展示文章内容时,页面会在文章底部自动追加一个分享链接,链接形如:
https://www.dreamlink.cloud/explorer?cid=QmNvT9MEHZCvLcJGHc763Jw5unKVNb7b1FHRHrD7uwNVfT&name=xxxx.pdf
- 你也可以在文章中任意位置使用
[ipfs_share_link]
短代码来显示该链接。
- 每当展示文章内容时,页面会在文章底部自动追加一个分享链接,链接形如:
- 扩展和自定义
- 可根据需要调整展示位置、样式或增加其他功能;
- 如需要在媒体库中显示分布式图片效果,可进一步扩展。
这个示例插件提供了一个基本实现,你可以根据业务需求进一步扩展功能和样式。