媒体上传器屏幕上的额外对齐按钮

时间:2014-12-20 作者:Jack Ottermans

我不能对一个激动人心的问题发表评论,因为我的声誉太低,当我在这个激动人心的话题内回复时,它会被删除,因为这不是一个解决方案,而是另一个问题,所以我开始了一个全新的(相同的)问题:s

这就是我所说的问题。Add an alignment option for images

大卫提供的答案。binda是目前为止我认为最好的解决方案,因为没有更好的挂钩或过滤器选项仅适用于对齐按钮。

直到WordPress4.0.1除了升级到最新的WordPress外,一切都很好4.1.0此解决方案因某种原因中断,我找不到原因。

这是以前的样子。只需在media uploader(媒体上传器)模式上添加一些额外的对齐按钮。如果选择LeftSuper,它会将前端的图像拉到内容容器外一点。

enter image description here

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

我认为你真正的问题是时机,因为你应该只做remove_actionadd_actionwp_enqueue_media 在结束时激发的操作wp_enqueue_media() 函数,添加要替换的操作后:

add_action( \'wp_enqueue_media\', function () {
    if ( ! remove_action( \'admin_footer\', \'wp_print_media_templates\' ) ) {
        error_log("remove_action fail");
    }
    add_action( \'admin_footer\', \'my_print_media_templates\' );
} );
(我的猜测是remove_action() 你所做的实际上是失败的wp_print_media_templates() 仍在通话中,但在my_print_media_templates(), 因此DOM有两个媒体模板的副本,但您的成功是因为它是第一个。虽然我不明白你为什么要自己做require_once 在“media template.php”中,这是一个相当大的闪烁警告灯!)

此外,虽然这是个人喜好,但我更喜欢操作现有模板(在调用原始模板之后wp_print_media_templates()) 而不仅仅是复制粘贴整个沙邦并编辑它们。例如:

function my_print_media_templates() {
    $replaces = array(
        \'/<option value="center"/\' => \'<option value="leftsuper">\' . esc_attr__(\'LeftSuper\') . \'</option>$0\',
        \'/<option value="none"/\' => \'<option value="rightsuper">\' . esc_attr__(\'RightSuper\') . \'</option>$0\',
        \'/<button class="button" value="center">/\' => \'<button class="button" value="leftsuper">\' . esc_attr__(\'LeftSuper\') . \'</button>$0\',
        \'/<button class="button active" value="none">/\' => \'<button class="button" value="rightsuper">\' . esc_attr__(\'RightSuper\') . \'</button>$0\',
    );
    ob_start();
    wp_print_media_templates();
    echo preg_replace( array_keys( $replaces ), array_values( $replaces ), ob_get_clean() );
}
我认为这比拷贝更易于维护&;粘贴方法,几乎可以保证在每次新发布的WP上都会过时。

SO网友:Jack Ottermans

明白了!

Workflow:

只需复制默认值wp_print_media_templates() 函数,并将其添加到主题函数中。php文件可在/wp includes/media template中找到wp\\u print\\u media\\u templates功能。php

将函数重命名为my_print\\u media\\u templates()-更改要编辑的代码。在我的例子中,我添加了一些额外的对齐按钮。

之后,在下面添加以下3行代码,这将删除默认功能-它还确保包含原始媒体模板。php文件。不知道为什么需要这样做,但出于某种原因需要这样做。之后,最后一行代码添加您的自定义my_print\\u media\\u templates()函数到WordPress,这将代替原来的WP核心函数使用。

祝你好运这并不漂亮,这是一堵需要添加的代码墙,但我认为这是向前发展的最佳方式,直到WordPress在原始函数中为我们提供更多的挂钩/过滤器。

 *** wall of code here - see: http://pastebin.com/AgCysMdf ***

// remove default wp_print_media_templates from footer
remove_action( \'admin_footer\', \'wp_print_media_templates\' );

// require the media-template.php again
require_once ABSPATH . WPINC . \'/media-template.php\';
// add your custom print templates
add_action( \'admin_footer\', \'my_print_media_templates\' );

This approach works but it\'s better to use @bonger\'s solution

结束

相关推荐