设置链接目标复选框在管理帖子编辑屏幕的编辑图像模式窗口中被选中?

时间:2014-10-16 作者:JasonDavis

在视觉编辑器中的新版本WordPress中,当您添加照片时,可以单击它,显示Edit, Delete, 和Resize 按钮。

enter image description here

现在,如果单击上图中显示的编辑按钮。它将在DOM中插入一个模式窗口,该窗口具有更多图像设置,如下图所示。。。

enter image description here

在图像中,您可以看到一个部分Advanced Options 其中有一个设置复选框open link in new window/tab

我的客户希望我修改他的WordPress,使该复选框在默认情况下处于选中状态,这样他就不必为每幅图像都自己做这件事。

我最初认为我可以使用JavaScript/jQuery对其进行如下检查。。。

jQuery(document).ready( function () {

    jQuery(".link-target input[type=\'checkbox\']").prop({
      checked: true
    });

});
但是,这不起作用,可能是因为在单击按钮编辑图像后,模式似乎被添加到DOM中。

我希望有人能帮我想出一个解决办法,也许?

1 个回复
最合适的回答,由SO网友:josh 整理而成

好WordPress使用wpeditimage tinymce插件,用于执行“添加媒体”编辑器按钮的任务。

单击铅笔图标编辑图像时。。。这个wpeditimage 插件将读取图像代码,并确定是否有值_blank 对于target 属性

如果值为_blank; 当模式窗口打开时,插件将选中该框。如果未选中,则不选中该框。

您可以在中看到此代码的作用wp-includes/js/tinymce/plugins/wpeditimage/plugin.js, 第217行:

metadata.linkTargetBlank = dom.getAttrib( link, \'target\' ) === \'_blank\' ? true : false;
所以。。。要默认选中。。。每次将图像插入编辑器时。。它还需要具有以下属性和值:;target="_blank".

现在要选中该框的唯一方法。。。已具有的值target="_blank"<a> 插入编辑器时链接包装图像。为此;我们将使用image_send_to_editor 滤器

add_filter(\'image_send_to_editor\', \'my_add_target_blank\', 10, 8);
function my_add_target_blank($html, $id, $caption, $title, $align, $url, $size, $alt = \'\' ){

    // check if there is already a target value
    if ( preg_match(\'/<a.*? target=".*?">/\', $html) ) {
        $html = preg_replace(\'/(<a.*? target=".*?)(".*?>)/\', \'$1 \' . \'_blank\' . \'$2\', $html);
    } else {
        $html = preg_replace(\'/(<a.*?)>/\', \'$1 target="\' . \'_blank\' . \'" >\', $html);
    }
    return $html;
}
应该注意添加target="_blank" 属性到<a> 标记包装插入的图像。

现在,如果您单击以编辑图像(插入后立即)。。。您会注意到“在新选项卡/窗口中打开链接”选项现在已选中。

快乐的编码!

结束

相关推荐

Manually add admin bar

有人知道如何在页面模板中包含管理栏吗wp_head() 和wp_footer() 是否不存在?我正在开发一个模板,其他脚本和样式正在阻碍我。我没有把所有我不需要的东西都列出来,而是简单地把这两个钩子一起去掉了。我想要的只是管理栏。谢谢