利用WordPress媒体上传工具添加和删除图片

在本系列的上一篇文章中,我们开始使用 wordpress 媒体上传器的最新版本,以便更清楚地了解如何开始将其合并到我们的项目中。

使用这个新功能(嗯,是 3.5 以后的新功能)的困难之处在于它没有像其他功能那样有详细的文档记录。这显然让很多开发人员——尤其是初学者——对如何开始使用它感到摸不着头脑。再加上对底层系统的全面检修,您将有很多事情要做。

根据第一篇文章的反馈,我们将考虑进一步扩展本系列的范围。在本文中,我们将实际应用上一篇文章中介绍的功能。然后,在后续文章(或者可能不止一篇后续文章)中,我们将详细介绍媒体上传器的工作原理。

从上次停下的地方继续

在上一篇文章中,我们开始开发一个插件,如果选择了图像,该插件会在每篇文章的底部引入“特色页脚图像”。此元框适用于帖子和页面帖子类型。

到目前为止,我们已经成功添加了元框,启动了 WordPress 媒体上传器并选择了一个图像用作我们的特色图像,但我们实际上还没有对从返回给我们的信息执行任何操作媒体上传器。

在这篇文章中,我们将继续实现该功能,以便我们在帖子底部显示图像。之后,我们将把注意力转向我们可用的 API 的更多技术细节。

为了从我们上次停下的地方继续,我们需要能够复制标准“特色图像”元框提供的功能。为了做到这一点:

我们需要从媒体上传器捕获信息显示所选的图像正确调整所选图片的大小设置删除图像的选项

显然,我们已经完成了我们的工作。

在我们执行任何操作之前,请确保更新 renderMediaUploader 函数以接受 $ 作为参数,以便我们可以在整个示例中使用 jQuery。

函数声明应如下所示:

function renderMediaUploader( $ ) { ... }

对函数的调用现在应该如下所示:

renderMediaUploader( $ );

现在,让我们开始吧。

1。捕获图像

从媒体上传器中选择图像后,数据将以 JavaScript 形式返回给您。具体来说,数据将以 JSON 的形式返回给我们。这将使我们能够解析图像的各种属性,以便我们可以渲染并将其与我们的帖子一起保存。

但首先,让我们更新我们的代码。在 admin.js 中找到如下代码行:

file_frame.on( 'insert', function() {     /**     * We'll cover this in the next version.     */ });

并将其替换为:

file_frame.on( 'insert', function() {    // Read the JSON data returned from the Media Uploader    json = file_frame.state().get( 'selection' ).first().toJSON();});

显然,这并不是什么非常复杂的事情;但是,请记住将 json 添加为在文件顶部定义的变量,以及 file_frame 和 image_data。

如果您对返回的内容感到好奇,请随时将 json 的内容转储到您最喜欢的控制台调试器中。我们不会在这篇特定的文章中这样做,但我们可能会在未来的深入文章中做更多的事情。

2。显示选定的图像

为了让我们显示所选的图像,我们需要确保我们的元框中有一个可通过 JavaScript 访问的图像元素,以便我们可以在选择图像时更新其属性。

在 views/admin.php 中,我们将以下代码添加到我们的模板中。它包含我们将用来渲染图像的空图像元素。

请注意,我们利用 WordPress CSS 类 hidden 来隐藏容器。使用 JavaScript,我们将删除此类以显示图像(并且基本上会执行相反的操作以隐藏图像并显示锚点以再次选择图像)。

现在,我们可以重新访问 JavaScript 并在选择图像时渲染图像。我们需要做两件事:

隐藏锚点以允许用户选择图像在容器中显示特色图像

为此,让我们回顾一下本文前面介绍的 JavaScript 代码。检索 JSON 数据后,确保我们有图像的 URL,然后继续。

file_frame.on( 'insert', function() {    // Read the JSON data returned from the Media Uploader    json = file_frame.state().get( 'selection' ).first().toJSON();// First, make sure that we have the URL of an image to displayif ( 0 > $.trim( json.url.length ) ) {return;}// After that, set the properties of the image and display it$( '#featured-footer-image-container' ).children( 'img' ).attr( 'src', json.url ).attr( 'alt', json.caption ).attr( 'title', json.title )                        .show().parent().removeClass( 'hidden' );// Next, hide the anchor responsible for allowing the user to select an image$( '#featured-footer-image-container' ).prev().hide();});

显然,对代码进行了注释以解释发生了什么,但我们在很大程度上依赖 jQuery 来确保正确显示和隐藏元素。

首先,我们检查 json 的 URL 属性,以确保其长度大于零。我喜欢使用 $.trim 来将其作为防御性编码实践。如果它等于零,那么我们将返回,因为我们没有要显示的图像。

之后,我们利用我们在上一步中创建的新 div 元素。我们通过 children() 函数获取图像元素,然后设置其 src、alt 和 title 属性全部基于可通过 json 对象访问的属性。

从那里,我们选择图像的父容器,然后删除隐藏类。

毕竟,我们使用 featured-footer-image-container 元素作为访问锚点的点 – 在本例中,它是前一个元素 – 然后我们将其隐藏。

此时,图像应该出现在帖子元框中。

利用WordPress媒体上传工具添加和删除图片

但是我们有一个明显的问题:图像对于容器来说太大了。这意味着我们需要引入一些 CSS。

3。设计我们的特色图片

为此,我们需要添加一个 CSS 文件并更新核心插件文件,以便它将样式表排入队列。

首先,在插件文件夹中创建一个 css 目录,然后将 admin.css 添加到该目录中。在该文件中,添加以下代码:

#featured-footer-image-container img {    width:  100%;    height: auto;}

然后在插件的 run() 函数中添加以下钩子:

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );

最后添加以下函数:

/** * Registers the stylesheets for handling the meta box * * @since 0.2.0 */public function enqueue_styles() {    wp_enqueue_style(        $this->name,        plugin_dir_url( __FILE__ ) . 'css/admin.css',        array()    );}

如果您已正确设置选择器并且已正确注册样式表并将其排入队列,您应该会看到如下内容:

利用WordPress媒体上传工具添加和删除图片

好多了,不是吗?

4。我们如何删除图像?

正如我们添加一个元素来显示图像一样,我们也需要添加一个允许我们删除图像的元素。

为此,请重新访问 views/admin.php 并添加以下代码:

接下来,我们需要编写一些额外的 JavaScript,以便在显示图像时显示上面的锚点。为此,请重新访问 admin.js 并将其添加到本文前面添加的代码下方:

// Display the anchor for the removing the featured image$( '#featured-footer-image-container' )    .next()    .show();

就像我们对初始锚点所做的那样,我们需要设置一个事件处理程序,以便当单击“删除”锚点时,图像将被删除并恢复“设置特色图像”锚点。 p>

为此,首先重新访问 DOM 加载后立即触发的函数并添加以下代码:

$( '#remove-footer-thumbnail' ).on( 'click', function( evt ) {    // Stop the anchor's default behaviorevt.preventDefault();// Remove the image, toggle the anchorsresetUploadForm( $ );    });

现在我们需要定义 resetUploadForm 函数,所以现在就开始吧。请记住,这需要删除图像,隐藏“删除链接”容器,并恢复“设置图像”链接锚点。

/** * Callback function for the 'click' event of the 'Remove Footer Image' * anchor in its meta box. * * Resets the meta box by hiding the image and by hiding the 'Remove * Footer Image' container. * * @param    object    $    A reference to the jQuery object * @since    0.2.0 */function resetUploadForm( $ ) {    'use strict';// First, we'll hide the image$( '#featured-footer-image-container' ).children( 'img' ).hide();// Then display the previous container$( '#featured-footer-image-container' ).prev().show();// Finally, we add the 'hidden' class back to this anchor's parent$( '#featured-footer-image-container' ).next().hide().addClass( 'hidden' );}

此时,我们已获得选择图像、删除图像以及继续执行此操作所需的一切。

仍有工作要做,但我们将在下一篇文章中介绍这一点。同时,不要忘记在 GitHub 上查看相关存储库以获取该项目源代码的当前版本。

接下来…

显然,我们已经处理了很多后端工作,因为它涉及选择图像、显示图像和删除图像,但我们仍然缺少一个关键的功能:保存图像,以便它与帖子相关联。

为了将网站访问者看到的内容与我们在后端指定的内容联系起来,我们需要做一些工作,将 JSON 数据保存到数据库,对其进行清理、检索,然后显示它在前面。

在本系列的下一篇文章中,我们将看看如何做到这一点。同时,请随时在下面的提要中留下任何评论或问题。

利用WordPress媒体上传工具添加和删除图片

以上就是利用WordPress媒体上传工具添加和删除图片的详细内容,更多请关注创想鸟其它相关文章!

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

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
link标签和import有什么区别
上一篇 2025年12月21日 21:31:45
使用HTML和CSS创建印度国旗
下一篇 2025年12月21日 21:32:06

相关推荐

  • MySQL中SQL注入防范 SQL注入攻击的预防与应对措施

    sql注入的防范核心在于参数化查询。具体措施包括:1.始终使用参数化查询,将用户输入视为数据而非可执行代码;2.对输入进行过滤与校验,如验证格式、转义特殊字符;3.遵循最小权限原则,限制数据库账号权限;4.控制错误信息输出,避免暴露敏感细节;5.定期更新框架与插件,及时修补漏洞。这些方法结合使用能有…

    2026年9月24日
    100
  • 有选择性地移除 WooCommerce 订单邮件中的产品购买备注

    本文将指导您如何针对特定的 WooCommerce 订单邮件通知,有选择性地移除产品购买备注,避免在所有邮件中都隐藏该信息。 使用 WooCommerce 钩子和全局变量进行控制 WooCommerce 允许开发者通过钩子(hooks)修改其核心功能。为了实现我们的目标,我们需要使用 woocomm…

    2026年9月24日
    300
  • 根据 WooCommerce 运输方式设置新订单邮件的回复地址

    本教程旨在解决 WooCommerce 商店中,根据不同的运输方式,动态设置新订单邮件的回复地址的问题。我们将提供一段代码示例,该代码通过 wp_mail 钩子,根据订单中的运输方式,修改邮件头部信息中的 “Reply-To” 字段,从而实现不同的运输方式对应不同的回复邮箱。…

    2026年9月23日
    200
  • 移除特定 WooCommerce 邮件通知中的产品购买备注

    本文旨在指导 WooCommerce 用户如何针对特定类型的邮件通知(例如“订单完成”邮件)移除产品购买备注,避免在不必要的邮件中显示这些信息。我们将通过添加自定义代码片段,利用 WooCommerce 提供的钩子(hooks)来精确控制购买备注的显示与隐藏,确保只在需要的邮件类型中展示相关信息。 …

    2026年9月23日
    500
  • 解决WordPress插件中$wpdb对象未初始化导致的数据库更新失败问题

    本文旨在解决wordpress插件开发中,使用`$wpdb`对象进行数据库更新时出现`call to a member function query() on null`错误。该错误通常是由于`$wpdb`对象未正确初始化所致。教程将详细解释错误原因,并提供通过引入`wp-config.php`文件…

    2026年9月23日
    200
  • WooCommerce 新订单邮件:根据运输方式设置回复邮箱

    本文介绍了如何根据 WooCommerce 订单中的运输方式,动态设置新订单邮件的回复邮箱。通过自定义 wp_mail 钩子,可以实现更精细化的邮件管理,将不同运输方式的客户咨询路由到相应的邮箱地址,提高客户服务的效率。 根据运输方式自定义 WooCommerce 新订单邮件回复邮箱 WooComm…

    2026年9月23日
    000
  • WooCommerce教程:有选择地从订单邮件通知中移除产品购买备注

    本文将指导您如何通过自定义代码,在WooCommerce的特定订单邮件通知中移除产品购买备注。默认情况下,购买备注会出现在订单确认邮件和订单完成邮件中。但有时,您可能希望仅在订单确认邮件中显示这些备注,而在订单完成邮件中将其隐藏。以下步骤将帮助您实现这一目标。 步骤 1: 理解问题 直接使用wooc…

    2026年9月23日
    500
  • Airtable的AI混合工具怎么用?快速管理数据的智能化操作步骤

    Airtable的AI混合工具通过将AI能力嵌入数据管理流程,实现自动化处理、分析与内容生成。首先明确AI需求,如总结反馈或生成文案;接着选择AI字段或在自动化中添加AI动作;然后配置模型与提示词,精准设计指令以确保输出质量;指定输入输出字段后进行测试迭代,优化提示词直至满意;最后部署并持续监控。该…

    2026年9月23日
    200
  • 解决WordPress wp-settings.php中致命错误的实用指南

    当WordPress网站遭遇wp-settings.php中Call to undefined function的致命错误时,通常意味着核心文件已损坏。本教程将指导您通过下载全新WordPress副本并替换站点中wp-admin和wp-includes目录来有效解决此问题,确保网站恢复正常运行,并提…

    2026年9月21日
    100
  • WordPress插件定制:使用Filter Hook修改邮件通知接收者

    本教程将指导您如何在WordPress中利用Filter Hook定制插件行为,特别是修改第三方插件的邮件通知接收者。我们将详细讲解如何识别目标Filter、理解其参数,并正确编写回调函数来拦截或修改数据,以实现自定义的邮件发送逻辑,避免因参数不匹配导致的错误。 WordPress Hook机制概览…

    2026年9月21日
    200
  • 修复WordPress wp-settings.php 中致命错误的专业指南

    本文旨在解决WordPress网站中因核心文件损坏导致的wp-settings.php致命错误,特别是“Call to undefined function”问题。通过提供详细的步骤,指导用户安全地替换受损的wp-admin和wp-includes目录,从而恢复网站功能。文章强调了备份的重要性,并提…

    2026年9月20日
    100
  • WordPress开发:解决AJAX提交HTML内容中的反斜杠问题

    在wordpress开发中,通过ajax提交包含html标签(尤其是“标签)的内容时,可能会在php后端收到带有反斜杠的字符串,导致html渲染异常。本文将深入分析这一问题的原因,并提供使用`wp_unslash()`函数在php端正确处理并移除这些反斜杠的解决方案,确保html内容(如…

    2026年9月12日
    100
  • WordPress插件邮件通知接收者定制:钩子应用详解

    本文详细阐述了如何在WordPress中利用过滤器(Filter Hook)机制,安全且高效地修改第三方插件的默认行为,特别是针对邮件通知的接收者。通过分析插件源代码,理解钩子参数,并编写自定义函数,开发者可以精确控制插件发送邮件的目标地址,避免直接修改插件文件带来的维护问题。 理解WordPres…

    2026年9月11日
    100
  • .com网站如何建设_打造专业.com网站的指南

    明确目标后注册.com域名并选择可靠主机,利用建站平台或CMS搭建网站,设计简洁专业的界面,适配移动端,设置信任元素,上线后持续更新内容、优化SEO、推广并维护安全。 建设一个专业的.com网站并不需要你一开始就拥有技术背景或大量资金。只要按步骤规划、选择合适工具并持续优化,任何人都能打造一个具备专…

    2026年9月11日
    100
  • WAMP一键包怎么安装_WAMP一键包安装详细教程

    安装WAMP一键包可快速搭建PHP环境,首先下载WampServer等集成包,确认系统满足要求并关闭防火墙,安装时选择合适路径,启动后待任务栏图标变绿,浏览器访问localhost显示欢迎页即成功,支持多PHP版本切换与本地项目部署。 安装WAMP一键包其实很简单,适合新手快速搭建本地PHP运行环境…

    2026年9月10日
    100
  • WooCommerce my-account重定向:如何正确排除子端点

    本教程旨在解决woocommerce中,为未登录用户重定向`my-account`主页时,如何避免同时重定向`lost-password`等子端点的问题。我们将介绍使用`template_redirect`钩子结合`global $wp->request`来精确控制重定向逻辑,确保用户仍能访问…

    2026年9月8日
    000
  • 解决WordPress插件中wpdb对象为null导致MySQL更新失败的方案

    本文旨在解决wordpress插件开发中,使用`$wpdb->query()`进行mysql数据更新时遇到的`call to a member function query() on null`错误。核心问题在于`$wpdb`全局对象未正确初始化,其根本原因通常是缺少对wordpress核心配…

    2026年9月8日
    300
  • 什么是DLL劫持

    windows操作系统在其基础架构中定义了dll的搜索路径(加载dll文件时需要遵循的目录查找顺序)。如果您能够识别出没有指定绝对路径的可执行文件请求的dll(从而触发此搜索过程),您就可以将包含恶意代码的dll放置在搜索路径的优先位置。这样,windows会在加载官方版本之前找到您的dll,并毫不…

    2026年9月7日
    300
  • WordPress插件邮件通知接收者自定义指南

    本文详细介绍了如何在不修改插件核心文件的前提下,利用WordPress的过滤器(Filter Hook)机制,自定义第三方插件(如Booking Activities)的邮件通知接收者。通过分析过滤器参数、编写自定义函数并注册到bookacti_email_notification_data钩子,您…

    2026年9月5日
    100
  • WordPress 管理通知的持久化解决方案:collizo4sky/persist-admin-notices-dismissal 库

    最近在开发一个 wordpress 插件时,遇到了一个问题:插件需要显示一个重要的提示信息,但这个信息在用户关闭后,刷新页面就会再次出现。这不仅影响用户体验,也增加了不必要的麻烦。我尝试了一些方法,例如使用 wordpress 的选项存储来记录通知状态,但发现实现起来比较复杂,而且代码不够优雅。 这…

    2026年9月4日
    200

发表回复

登录后才能评论
关注微信