由于默认情况下存在的专用按钮,将媒体文件插入使用WordPress的帖子并不是很复杂。但是,如果您使用媒体文件开发插件,则此按钮将无法帮助您的用户插入功能所需的代码。
幸运的是,可以添加自己的媒体按钮,因此您可以正确地做任何您想做的事情。
>>在本教程中,我们将查看如何在正确的位置添加媒体按钮,当用户单击它时如何打开媒体窗口,最后,如何获取所选项目以同时插入它们视觉和HTML编辑器
您可以想象,我们现在需要修改我们的功能以正确地显示我们的按钮。我们希望我们的按钮具有与默认的样式相同的样式。
>媒体按钮不是真实的按钮,它们是链接的链接,并带有一个按钮的样式,WordPress为我们提供了此样式的类,名为“
<span>add_action('media_buttons', 'add_my_media_button');</span>> button
”。
>我们给我们的按钮一个ID。这样,我们将能够以后在JavaScript中检索它。> 我们的自定义媒体按钮已经准备就绪:它具有正确的样式和几乎正确的位置。实际上,默认情况下,我们的新按钮放在默认一个按钮之前。如果我们想将其放在之后,则可以将第三个参数传递给add_action()调用以更改我们的功能的优先级。
实际上,显示默认媒体按钮的功能的优先级为10。指示我们函数的值较低的值将在默认值之前放置我们的按钮。如果我们想将其放置,我们可以指出更大的价值。
><span>add_action('media_buttons', 'add_my_media_button');</span>
就是这样!现在,我们必须使我们的按钮更有用。
要打开媒体窗口,我们将使用JQuery使用JavaScript,默认情况下将包含在WordPress中。首先,我们创建一个JS文件。我选择将其命名Media_button.js,但是,当然,您可以自由选择自己的名字。
如果您熟悉WordPress,则应该知道CMS为我们提供了一种适当的方法来包括所需的JS文件。为此,我们创建了一个函数,其中我们使用WordPress函数wp_enqueue_script()。
<span>function add_my_media_button() { </span> echo <span>'<a href="#" >Add my media</a>'; </span><span>}</span>如您所见,我们将jQuery表示为依赖性。多亏了最后一个论点,我选择将脚本包括在页脚中,但是如果您愿意,您可以将其放在标题中。
>我们创建了一个函数,以要求WordPress仅在必要时包含我们的脚本。为此,我们将使用另一种操作:WP_ENQUEUE_MEDIA,当WordPress调用媒体按钮所需的所有脚本时,它会触发。
>
<span>add_action('media_buttons', 'add_my_media_button', 15);</span>构建窗口
>媒体窗口是wp.media对象的实例。它的构造函数允许一个参数,它是另一个对象,其中包含窗口的某些属性。因此
<span>function include_media_button_js_file() { </span> <span>wp_enqueue_script('media_button', 'path/to/media_button.js', array('jquery'), '1.0', true); </span><span>}</span>
标题属性将显示为窗口的标题。请小心,按钮属性的值是一个对象,该对象允许文本属性设置用户将在其上单击以验证其选择的按钮的标签。
<span>add_action('wp_enqueue_media', 'include_media_button_js_file');</span>
。但是,如果您不指定标题,则您的窗口将不列表。默认情况下,多个属性设置为false,并且显示的媒体文件未过滤。
使用媒体窗口检索用户的选择
以下代码在我们上面创建的Open_Media_window()函数内部。目前,我们的窗口已构造,但没有打开。要打开窗口,您可以使用open()方法,但是,在之前,您可能需要检索用户的选择。
为此,我们将使用WordPress为媒体窗口创建的特殊事件:选择。将功能附加到此事件需要使用on()方法。
>>现在,用户的选择存储在变量选择中。取决于您是否允许多项选择,此变量的使用不同。
<span>add_action('media_buttons', 'add_my_media_button');</span>>
如果用户只能选择一个文件,则可以使用第一个()方法检索它。然后,您可以将获得的对象转换为JSON,以获取所需的信息。用以下方式替换上述窗口。
这个JSON对象包含有关所选文件所需的一切。例如,您可以通过URL属性访问文件URL时访问使用ID属性的文件ID。
如果您想知道可以使用哪些属性,例如,您可以在浏览器的控制台中列出所有属性。<span>function add_my_media_button() { </span> echo <span>'<a href="#" >Add my media</a>'; </span><span>}</span>
如果用户可以选择多个文件,则可以将选择转换为数组。然后,您可以与第一种情况一样,使用tojson()方法检索每个文件的数据。用以下方式替换上述窗口。
文件数组进行排序:0条目包含用户选择的第一个文件,1条目包含第二个文件,等等。
<span>add_action('media_buttons', 'add_my_media_button', 15);</span>>在编辑器中插入文本
>现在我们检索了用户的选择,我们将在编辑器中插入一些文本。为此,我们将使用WordPress函数wp.media.editor.insert(),该函数允许一个参数:要在光标当前位置插入的文本。
<span>function include_media_button_js_file() { </span> <span>wp_enqueue_script('media_button', 'path/to/media_button.js', array('jquery'), '1.0', true); </span><span>}</span>>
使用此功能的优点是WordPress会自动将我们的文本插入Visual和HTML编辑器中。
>我们的窗口已准备就绪。但是,问题仍然存在:每次用户键入按钮时,它都会被重建,因此我们将更改此行为。
<span>add_action('wp_enqueue_media', 'include_media_button_js_file');</span>>首先,我们检查窗口是否已经创建,如果没有创建,则创建它。然后,我们打开窗口,并使用指令返回false完成Open_Media_window()函数;为了防止链接的默认行为。
请注意,有多种方法可以防止上述问题。但是,该方案始终是相同的,您可以轻松地调整自己喜欢的方法。
>您现在知道如何添加媒体按钮以及如何使用它来插入与用户选择有关的一些文本。如果您列出了我们上面创建的数据变量的属性,则您可能已经注意到WordPress会为我们提供有关所选媒体文件的所有信息,这意味着您可以对此进行任何操作。
我可以在内容编辑器中自定义媒体按钮吗?是的,您可以自定义内容编辑器中的媒体按钮。您可以使用各种WordPress功能和挂钩更改按钮的文本,样式和功能。例如,您可以使用“ Media_buttons_Context”过滤器来更改编辑器中的按钮位置。您还可以使用“ wp.media”对象来自定义媒体上传器的外观和行为。
>
>为什么我在内容编辑器中看不到“添加媒体”按钮?您无法在内容编辑器中看到“添加媒体”按钮,这可能是由于用户角色限制。 WordPress允许您控制网站上不同的用户角色可以执行的操作。如果您的用户角色没有“ upload_files”功能,则将无法看到“添加媒体”按钮。您可以通过使用诸如用户角色编辑器之类的插件来修改用户角色的功能来更改此操作。如果您在“添加媒体”按钮上遇到麻烦,则可以使用几种替代方案。一种选项是使用“来自服务器的添加”插件,该插件允许您直接从服务器上传文件。另一个选择是使用“拖放特征图像”插件,该插件使您可以将图像拖放到帖子和页面中。您还可以使用“ FTP”插件中的“媒体”通过FTP上传文件。
我可以限制谁可以在内容中使用“添加媒体”按钮编辑器?
为什么我的媒体在使用后不出现媒体“添加媒体”按钮?
以上是将媒体按钮添加到WordPress内容编辑器的详细内容。更多信息请关注PHP中文网其他相关文章!