使用 WordPress 媒体上传器来保存图像

在本系列中,我们将了解如何在实际插件中实现 wordpress 媒体上传器。本系列及其相关代码背后的想法是让我们清楚地了解它是如何工作的,我们将来如何使用它,以及如何将它融入到我们的工作中。

到目前为止,我们已经介绍了:

WordPress 媒体上传器入门使用 WordPress 媒体上传器添加和删除图像

在这些文章中,我们逐步了解了构建一个插件的过程,该插件使用 WordPress 媒体上传器将特色图像引入到我们博客文章(和页面)的页脚中。

但有一个问题:图像未保存,也未显示在其关联博客文章(或页面)的内容中。

在本文中,我们将继续我们上次停下的地方,并完成该插件其余部分的实现。请注意,我假设您已阅读前两篇文章并了解我们迄今为止介绍的源代码。

话虽如此,让我们继续。

保存特色图像

确保图片能够在 WordPress 前端显示的关键是保存 WordPress 提供的图片信息。

在上一篇文章中,我们使用其中一些信息在我们创建的元框中显示图像,但实际上没有保存这些信息。因此,该图像无法显示在仪表板或网站前端,因为 WordPress 实际上并不记住它。

我们会解决这个问题。具体来说,我们将保存以下字段:

图像 URL,以便我们可以设置图像的 src 属性图像标题,以便我们可以将其设置为图像的 alt 属性和 title 属性

介绍元数据

我们需要做的第一件事是在插件的 admin.php 视图中添加另一个包含三个输入字段的容器。这些字段中的每一个都将对应于上面的值。

看一下下面的代码,然后我将详细说明:

从一开始,它就应该足够容易理解:

我们引入了一个由 featured-footer-image-meta 标识的容器包含三个输入文本元素,每个元素对应于我们将保存的图像元素属性

此时,我们需要跳回到 JavaScript 文件,以便我们可以获取通过媒体上传器返回给我们的信息,并使用此信息填充输入字段。

打开 admin.js,然后将以下三行添加到插入 event 的处理函数底部(对于 file_frame) :

// Store the image's information into the meta data fields$( '#footer-thumbnail-src' ).val( json.url );$( '#footer-thumbnail-title' ).val( json.title );$( '#footer-thumbnail-alt' ).val( json.title );

从这里导航到您的 WordPress 仪表板,添加新帖子或编辑现有帖子,您应该会看到如下图所示的内容:

使用 WordPress 媒体上传器来保存图像

假设您已直接编写了所有 JavaScript,则根据您在中提供的数据,您应该会看到类似的内容选择图像时的媒体上传器。

但请注意,当您单击“删除特色图像”时,文本将保留。在我们实际保存此信息之前,让我们完成 JavaScript,以便每当用户删除图像时它都会清除输入字段。

虽然有多种方法可以做到这一点,但我选择使用以下代码:

// Finally, we reset the meta data input fields$( '#featured-footer-image-info' )    .children()    .val( '' );

请记住,这需要位于“删除特色图像”锚点的事件处理程序中。在上一篇文章中,我们将此函数命名为 resetUploadForm

此时,您应该能够单击“删除精选图像”并看到图像和输入字段已重置。如果您遇到问题,请查看与本文相关的 GitHub 存储库中的源代码(它将位于 master 分支中,并且还将标记为 1.0.0)。

保存元数据

现在我们需要在插件中引入一些代码,这些代码将清理输入字段的值,将它们与帖子相关联,并将其保存到数据库中,以便我们可以在每个帖子的页脚处显示信息。

Acme_Footer_Imagerun 函数中,添加以下代码行:

add_action( 'save_post', array( $this, 'save_post' ) );

然后我们需要定义一个函数,负责将输入字段的值实际保存到数据库中。对于以下代码,有两件事需要了解:

我们会在保存数据之前对其进行清理我们将字段与用于在前端显示图像的键相关联。

/** * Sanitized and saves the post featured footer image meta data specific with this post. * * @param    int    $post_id    The ID of the post with which we're currently working. * @since 0.2.0 */public function save_post( $post_id ) {    if ( isset( $_REQUEST['footer-thumbnail-src'] ) ) {update_post_meta( $post_id, 'footer-thumbnail-src', sanitize_text_field( $_REQUEST['footer-thumbnail-src'] ) );}if ( isset( $_REQUEST['footer-thumbnail-title'] ) ) {update_post_meta( $post_id, 'footer-thumbnail-title', sanitize_text_field( $_REQUEST['footer-thumbnail-title'] ) );}if ( isset( $_REQUEST['footer-thumbnail-alt'] ) ) {update_post_meta( $post_id, 'footer-thumbnail-alt', sanitize_text_field( $_REQUEST['footer-thumbnail-alt'] ) );}}

在准备测试之前,我们需要在前端显示图像之前对仪表板视图再进行两项更改。

首先,我们需要确保将元数据回显到输入字段。跳到 admin.php 并再次更新它以包含以下内容:

在这里,我们调用 get_post_meta 函数来检索使用我们上面声明的函数保存的值。

接下来,我们需要确保使用相同的值填充本系列前面创建的图像元素:

当然,如果元数据为空,则不会填充任何内容,并且图像将不会显示。

假设一切顺利,您应该在保存帖子时看到图像及其关联数据显示在输入字段中。同样,当您删除特色图像时,字段应该清除并且不再显示。

清理

在我们继续在前端显示图像之前,我们需要做一些小事情来清理元框的显示。

首先,我们需要确保之前类型为 text 的所有输入字段均为 hidden 类型。

接下来,我们需要编写一个小的 JavaScript 函数,该函数将显示图像(假设图像已保存)。该函数将检查图像 URL 的输入字段是否不是空字符串。

如果不是,那么它将显示图像。因此,我们将此函数添加到 JavaScript 文件中:

/** * Checks to see if the input field for the thumbnail source has a value. * If so, then the image and the 'Remove featured image' anchor are displayed. * * Otherwise, the standard anchor is rendered. * * @param    object    $    A reference to the jQuery object * @since    1.0.0 */function renderFeaturedImage( $ ) {    /* If a thumbnail URL has been associated with this image     * Then we need to display the image and the reset link.     */if ( '' !== $.trim ( $( '#footer-thumbnail-src' ).val() ) ) {$( '#featured-footer-image-container' ).removeClass( 'hidden' );$( '#set-footer-thumbnail' ).parent().hide();$( '#remove-footer-thumbnail' ).parent().removeClass( 'hidden' );}}

然后,在 DOM 就绪函数的上下文中调用 JavaScript 函数:

renderFeaturedImage( $ );

简而言之,当页面加载时,它会检查输入字段中是否存在 URL。如果是这样,它会渲染图像并为我们提供删除它的选项。否则,它只显示空的特色图像框。

再次强调,如果您在执行此代码时遇到问题,请务必使用本页侧边栏中的链接查看关联的 GitHub 存储库。

显示特色图像

至此,我们已经在仪表板中完成了需要做的所有事情,现在是时候在博客的前端显示图像了。为此,我们需要设置一个连接到 the_content 操作的挂钩,检查图像是否存在,如果存在,则将其附加到帖子内容中。

为此,首先将以下行添加到 Acme_Footer_Image 类的 run 方法中:

add_action( 'the_content', array( $this, 'the_content' ) );

接下来,我们需要编写一个与此操作挂钩的函数。该函数将负责检查我们是否只是一个页面(因为如果用户有 more 标签,我们不想将图像附加到帖子的页脚其内容的一部分)。

我们使用以下代码来完成此操作:

/** * If the current post is a single post, check to see if there is a featured image. * If so, append is to the post content prior to rendering the post. * * @param   string    $content    The content of the post. * @since   1.0.0 */public function the_content( $content ) {    // We only care about appending the image to single pagesif ( is_single() ) {// In order to append an image, there has to be at least a source attributeif ( '' !== ( $src = get_post_meta( get_the_ID(), 'footer-thumbnail-src', true ) ) ) {// read the remaining attributes even if they are empty strings$alt = get_post_meta( get_the_ID(), 'footer-thumbnail-alt', true );$title = get_post_meta( get_the_ID(), 'footer-thumbnail-title', true );// create the image element within its own container$img_html = '';// append it to the content$content .= $img_html;}}return $content;}

这样,我们就应该有一个功能齐全的插件,将特色页脚图像附加到在单个帖子页面上呈现的帖子中。

结论

在本系列中,我们介绍了很多材料,其中最少涉及使用媒体上传器。尽管这篇文章花了更多时间向我们展示如何将数据从元框连接到前端,但它仍然演示了如何在插件上下文中应用媒体上传器的实际应用。

话虽如此,关于媒体上传器还有很多东西需要了解,我们可以在以后的主题中介绍这些内容。如果您有兴趣,请在下面的评论中告诉我。此外,如果您对所读内容或本系列有任何疑问,也请随时留下。

不要忘记查看该项目的 GitHub 存储库 – 我希望它能在您将来使用媒体上传器时为您提供良好的服务!

以上就是使用 WordPress 媒体上传器来保存图像的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1551366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HTML DOM Input Radio 对象
上一篇 2025年12月21日 21:39:28
JavaScript位非(~)运算符是什么?
下一篇 2025年12月21日 21:39:39

相关推荐

  • Typo3 Powermail:实现跨页面表单字段预填充的专业指南

    本文详细介绍了如何在Typo3环境中,利用Powermail插件实现跨页面表单字段的预填充。核心在于理解POST数据传递机制,并解决一个常见陷阱:当源表单的提交按钮与输入字段共享相同的name属性时,可能导致数据传递异常。通过移除提交按钮的name属性,确保输入字段的值能正确传递至目标Powerma…

    2025年12月22日
    000
  • Web前端OpenType字体特性管理:添加与启用深度解析

    本文深入探讨了在HTML/CSS中管理OpenType字体特性的可能性与限制。核心结论是,OpenType特性(如字距调整kern)无法通过HTML、CSS或标准JavaScript API直接添加到字体文件中。这些特性必须预先嵌入在字体本身中,而CSS的font-feature-settings属…

    2025年12月22日
    000
  • 网页交互与主题切换:HTML、CSS及JavaScript实现指南

    本教程将指导您如何利用HTML、CSS和JavaScript构建一个交互式网站。内容涵盖图片展示与描述切换、网站主题动态切换的实现方法,并提供针对CSS背景颜色设置常见问题的诊断与解决方案。通过清晰的代码示例和专业讲解,您将掌握提升网页用户体验和视觉多样性的核心技术。 一、构建交互式图片展示与描述切…

    2025年12月22日
    000
  • Web前端中OpenType字体特性的管理与限制

    本文探讨在Web前端开发中,是否能通过HTML/CSS直接添加OpenType字体特性(如字距调整)。核心结论是:OpenType特性必须内嵌于字体文件本身,CSS仅能用于激活或禁用已存在的特性。文章详细解释了CSS font-feature-settings 的用法,并指出通过JavaScript…

    2025年12月22日
    100
  • JavaScript实现HTML表单输入框回车键焦点循环切换

    本文详细介绍了如何使用JavaScript实现HTML表单中输入框的焦点管理。通过监听回车键事件,用户可以实现焦点从当前输入框自动跳转到下一个输入框,并在到达最后一个输入框时,焦点能够循环回到第一个输入框,从而提升用户输入体验和表单操作效率。 引言 在网页表单设计中,为了提高用户输入效率和体验,通常…

    2025年12月22日
    000
  • 解决HTML中图片在容器内不按预期缩放的问题

    解决HTML中图片在容器内不按预期缩放的问题解决HTML中图片在容器内不按预期缩放的问题解决HTML中图片在容器内不按预期缩放的问题解决HTML中图片在容器内不按预期缩放的问题

    当HTML中的图片在容器内无法按预期缩放时,通常是由于未正确设置CSS宽度属性。本教程将深入探讨图片默认行为,并提供通过CSS width: 100%; 或 max-width: 100%; 使图片响应式适应其父容器的解决方案,确保布局美观且避免内容溢出,同时介绍一些高级优化技巧。 理解图片缩放机制…

    2025年12月22日 用户投稿
    100
  • 前端开发实战:实现图片描述切换与网站主题切换功能

    前端开发实战:实现图片描述切换与网站主题切换功能前端开发实战:实现图片描述切换与网站主题切换功能前端开发实战:实现图片描述切换与网站主题切换功能前端开发实战:实现图片描述切换与网站主题切换功能

    本教程旨在指导您构建交互式网页功能,包括如何为图片添加可切换的描述信息,以及如何实现网站整体主题的动态切换。我们将详细讲解HTML结构、CSS样式定义、JavaScript交互逻辑,并提供解决常见CSS背景色不生效问题的实用调试技巧。 一、实现图片描述切换功能 为网站中的图片添加可交互的描述信息,使…

    2025年12月22日 用户投稿
    000
  • HTML与SEO优化:提升搜索引擎排名的网页设置技巧

    优化网站SEO需从HTML结构入手,首先设置唯一且含关键词的标题标签(50-60字符),其次使用语义化标签如、和-构建清晰层级;再为页面撰写吸引点击的元描述(150-160字符),并准确反映内容;为图片添加描述性ALT属性,提升可访问性与索引效果;通过压缩资源、优化图片和启用缓存提升加载速度;采用简…

    2025年12月22日
    000
  • HTML与Nuxt.js静态生成前端框架_HTML与Nuxt.js静态生成前端框架指南详解

    首先清除浏览器缓存并禁用缓存调试,接着检查nuxt.config.js中generate配置是否包含动态路由列表,然后执行npx nuxt generate命令生成dist静态文件,确保构建时API可用并设置fallback数据源,最后优化head标签和HTML结构以提升SEO与性能。 如果您尝试访…

    2025年12月22日
    000
  • JavaScript客户端页面重定向与URL参数解析教程

    本文旨在深入探讨JavaScript中客户端页面重定向机制以及如何高效解析URL参数。我们将首先介绍window.location对象在页面导航中的应用,随后重点讲解现代Web API URL对象及其searchParams属性,演示如何精准提取URL中的各项参数。文章还将涵盖相关最佳实践和注意事项…

    2025年12月22日
    000
  • HTML在线运行学习路径_从零开始学习HTML在线运行指南

    首先选择CodePen、JSFiddle等在线HTML编辑器,注册并创建新项目;接着编写包含DOCTYPE、html、head、body的标准结构代码,输入标题与段落内容,实时预览效果;然后在body中添加无序列表、img图片和a超链接元素,丰富页面内容;通过运行按钮调试,检查标签闭合与属性书写,并…

    2025年12月22日
    000
  • CSS Flexbox order属性深度解析:掌握响应式布局中的元素排序技巧

    CSS Flexbox order属性深度解析:掌握响应式布局中的元素排序技巧CSS Flexbox order属性深度解析:掌握响应式布局中的元素排序技巧CSS Flexbox order属性深度解析:掌握响应式布局中的元素排序技巧CSS Flexbox order属性深度解析:掌握响应式布局中的元素排序技巧

    本文深入探讨CSS Flexbox布局中order属性的使用,重点阐述其作用范围——仅对弹性容器的直接子元素生效。通过实际案例,我们将展示如何正确应用order属性在不同屏幕尺寸下调整元素顺序,并介绍flex-direction: column-reverse;这一更简洁的替代方案,以帮助开发者高效…

    2025年12月22日 用户投稿
    000
  • 动态生成HTML下拉菜单年份选项的教程

    本教程旨在指导开发者如何使用JavaScript和jQuery动态生成HTML下拉菜单(元素)中的年份选项。文章将详细介绍如何获取当前年份、定义年份显示范围(例如,当前年份前后各N年),并循环创建并插入年份选项,从而避免手动维护静态年份列表,提高表单的灵活性和可维护性。 动态生成年份选择器 在网页表…

    2025年12月22日
    000
  • HTML表单制作:快速构建用户交互表单完整指南

    如果您需要收集用户信息或实现网页交互功能,HTML表单是实现这一目标的核心工具。通过合理使用表单元素和属性,可以快速构建出结构清晰、功能完整的用户输入界面。以下是构建HTML表单的关键步骤和实用技巧: 一、创建基础表单结构 每个HTML表单都必须包裹在 以上就是HTML表单制作:快速构建用户交互表单…

    2025年12月22日
    000
  • 构建动态网站:实现图片描述切换与主题切换功能

    本教程将指导您如何使用HTML、CSS和JavaScript实现网页动态内容展示和主题切换功能。我们将学习如何为图片添加可切换的描述信息,以及如何通过按钮切换网站的整体视觉主题,并提供解决常见CSS背景颜色设置问题的实用建议,助您创建更具交互性和用户体验的网页。 1. 实现图片描述的动态切换 在网页…

    2025年12月22日
    000
  • 解决 contenteditable 元素文本输入方向异常问题

    本教程旨在解决 contenteditable 元素在输入时文本方向反转、首字符出现在末尾的异常行为。通过分析问题根源,我们提出一种有效的解决方案,即调整渲染逻辑,避免 contenteditable 元素直接绑定外部 value 属性,从而允许浏览器原生机制顺畅处理用户输入,并在此基础上同步更新组…

    2025年12月22日
    000
  • JavaScript 实现HTML元素持续按键移动教程

    本教程旨在解决HTML元素在按住键盘按键时无法持续移动的问题。文章将深入探讨keyup事件的局限性,并介绍如何利用keydown事件实现基础的连续移动。进一步,教程将提供一套更健壮的解决方案,结合keydown、keyup事件与requestAnimationFrame API,以确保动画的平滑性、…

    2025年12月22日
    000
  • HTMLJSON-LD怎么实现_结构化数据标记方案

    实现HTML JSON-LD需在网页中嵌入标签,内含符合Schema.org规范的JSON格式结构化数据,如@context定义词汇表、@type指定内容类型,并填充headline、author等属性;其优势在于无侵入性、易维护且被搜索引擎推荐;常见问题包括属性拼写错误、数据与页面内容不一致、动态…

    2025年12月22日
    000
  • HTML标签页怎么优化_标签页组件可访问性改进方案

    标签页组件的可访问性优化需基于语义化HTML与WAI-ARIA规范:使用role=”tablist”、role=”tab”和role=”tabpanel”明确组件结构,通过aria-controls、aria-labelledb…

    2025年12月22日
    000
  • Web开发教程:如何在HTML容器中正确调整图片大小

    Web开发教程:如何在HTML容器中正确调整图片大小Web开发教程:如何在HTML容器中正确调整图片大小Web开发教程:如何在HTML容器中正确调整图片大小Web开发教程:如何在HTML容器中正确调整图片大小

    本教程旨在解决HTML中图片无法按预期在容器内缩放的问题。当图片尺寸超出其父容器时,通常需要通过CSS设置图片的width: 100%,使其自适应父容器的宽度,从而避免溢出并实现响应式布局。文章将详细阐述这一核心解决方案,并提供代码示例,帮助开发者掌握图片在Web页面中的正确缩放技巧。 理解图片在H…

    2025年12月22日 用户投稿
    000

发表回复

登录后才能评论
关注微信