子比主题美化 – 古腾堡实况图预览模块一凡24天前更新关注私信080 教程代码并非截图所示样式,教程代码理论上wordpress通用,可以在任意的主题使用实况图预览,当然也并非百分百可用,仅理论实现此功能,如您有一定的代码基础,亦可按照适合自己主题的样式编写这个区块样式及功能 实现原理 WordPress 中引入 LivePhotosKit JS 库来支持实况图,并创建一个自定义古腾堡区块 首先,我们需要在 WordPress 中引入 LivePhotosKit JS 库 在你的主题的 functions.php 文件中添加以下代码: function enqueue_livephotoskit_script() { wp_enqueue_script('livephotoskit-js', 'https://cdn.apple-livephotoskit.com/lpk/1/livephotoskit.js', array(), null, true); } add_action('wp_enqueue_scripts', 'enqueue_livephotoskit_script'); 这段代码将在你的 WordPress 站点上加载 LivePhotosKit JS 库 接下来,我们将创建一个自定义 Gutenberg 区块,使用户能够方便地在区块编辑器中添加支持实况图的区域 function register_custom_live_photos_block() { wp_register_script( 'custom-live-photos-block', get_template_directory_uri() . '/block.js', array('wp-blocks', 'wp-element', 'wp-editor', 'wp-components', 'wp-i18n'), filemtime(get_template_directory() . '/block.js') ); register_block_type('custom/live-photos-block', array( 'editor_script' => 'custom-live-photos-block', 'render_callback' => 'render_custom_live_photos_block' )); } add_action('init', 'register_custom_live_photos_block'); function render_custom_live_photos_block($attributes) { if (!isset($attributes['photoURL']) || !isset($attributes['videoURL'])) { return ''; } $width = '100%'; $height = '300px'; // Example fixed height, adjust as necessary return sprintf( '<div class="live-photo-wrapper" style="width:%s; height:%s; position:relative;"> <div data-live-photo data-photo-src="%s" data-video-src="%s" style="width:100%%; height:100%%;"></div> </div>', esc_attr($width), esc_attr($height), esc_url($attributes['photoURL']), esc_url($attributes['videoURL']) ); } 主题跟目录创建一个 JavaScript 文件 block.js,并添加以下代码 (function (blocks, editor, element, components) { var el = element.createElement; var MediaUpload = editor.MediaUpload; var InspectorControls = editor.InspectorControls; var TextControl = components.TextControl; blocks.registerBlockType('custom/live-photos-block', { title: 'Live Photos Block', icon: 'camera', category: 'media', attributes: { photoURL: { type: 'string', default: '' }, videoURL: { type: 'string', default: '' }, width: { type: 'number', default: 400 }, height: { type: 'number', default: 300 } }, edit: function (props) { var attributes = props.attributes; var setAttributes = props.setAttributes; return el( 'div', { className: props.className }, el('p', {}, '选择图片和视频:'), el( MediaUpload, { onSelect: function (media) { setAttributes({ photoURL: media.url }); }, allowedTypes: 'image', render: function (obj) { return el(components.Button, { className: attributes.photoURL ? 'image-button' : 'button button-large', onClick: obj.open }, !attributes.photoURL ? '选择图片' : el('img', { src: attributes.photoURL }) ); } } ), el( MediaUpload, { onSelect: function (media) { setAttributes({ videoURL: media.url }); }, allowedTypes: 'video', render: function (obj) { return el(components.Button, { className: 'button button-large', onClick: obj.open }, '选择视频' ); } } ), el(InspectorControls, {}, el(TextControl, { label: '宽度(px)', value: attributes.width, onChange: function (value) { setAttributes({ width: parseInt(value, 10) || 0 }); } }), el(TextControl, { label: '高度(px)', value: attributes.height, onChange: function (value) { setAttributes({ height: parseInt(value, 10) || 0 }); } }) ) ); }, save: function () { // 后台通过 PHP 渲染,前端保存为空 return null; } }); }( window.wp.blocks, window.wp.editor, window.wp.element, window.wp.components )); 本文最后更新于2024-08-18 18:54:14,若文章内容或链接失效,请 留言 或 QQ群 反馈!文章没读爽?点我试试随机文章 © 版权声明 本文链接: 1 如果您喜欢本站, 点击这儿 赞助下本站,感谢支持! 2 可能会帮助到你: 下载帮助 | 解压资源 | 进站必看 3 本站内容观点不代表本站立场,并不代表本站赞同其观点和对其真实性负责 4 若作商业用途,请联系原作者授权,若本站侵犯了您的权益请 联系站长 进行删除处理 5本站所有内容均来源于网络,仅供学习与参考,请勿商业运营,严禁从事违法、侵权等任何非法活动,否则后果自负 THE END子比美化# 子比主题 喜欢就支持一下吧点赞0赞赏 分享QQ空间微博QQ好友海报分享复制链接收藏