我正在尝试在选择图像时重新排序媒体框中的链接。我想将“用作特色图片”移到“插入帖子”按钮上方。
我还想重命名“用作特色图像”文本?我通过编辑媒体做到了这一点。wp admin/INCLUDES/media中的php文件。php,但我不想每次升级都编辑这个。
是否可以在不必重写整个函数的情况下对元素重新排序?
提前谢谢。
编辑:
基本上,我想把文本移到按钮上方,也许还会像上面其他的一样在左侧添加标签。我还想重命名文本“use as featured image”。
编辑
感谢goto10帮助我做到这一点,下面的代码“起作用”,因为它更改了特征图像的文本和位置。虽然我无法获取附件ID,但它不会保存图像。。。它通过手动键入附件ID来工作。
function custom_attachment_fields_to_edit($form_fields, $post) {
$form_fields[\'buttons\'] = array(
\'label\' => \'Banner Image\',
\'value\' => \'\',
\'input\' => \'html\'
);
$thumbnail = \'\';
$calling_post_id = 0;
if (isset($_GET[\'post_id\']))
$calling_post_id = absint($_GET[\'post_id\']);
elseif (isset($_POST) && count($_POST))
$calling_post_id = $post->post_parent;
$attachment_id = ???
$ajax_nonce = wp_create_nonce( "set_post_thumbnail-$calling_post_id" );
$form_fields[\'buttons\'][\'html\'] = $thumbnail = "<a class=\'\' id=\'wp-post-thumbnail-" . $attachment_id . "\' href=\'#\' onclick=\'WPSetAsThumbnail(\\"$attachment_id\\", \\"$ajax_nonce\\");return false;\'>Set as Banner Image</a>";
return $form_fields;
}
add_filter(\'attachment_fields_to_edit\', \'custom_attachment_fields_to_edit\', 11, 2);
尝试获取附件ID:
$args = array(\'post_type\' => \'attachment\', \'post_parent\' => $_GET[\'post_id\'] );
$attachments = get_posts($args);
if ($attachments) {
foreach ( $attachments as $attachment ) {
$attachment_id = $attachment->ID;
}
}
$attachment_id = get_post_meta($_GET[\'post_id\'], \'_wp_attachment_image_id\', true);
$attachment_id = get_post_meta($_GET[\'post_id\'], \'_wp_attachment_url\', true );
还尝试更换
$_GET[\'post_id\']
具有
$calling_post_id
关于如何获取附件ID有什么建议吗?我试着从media.php
没有任何运气。
最合适的回答,由SO网友:Dave Romsey 整理而成
编辑:添加了输出附件id的示例。将其分配给变量$attachment\\u id,因为核心代码就是这样引用它的。请注意$post
对象(用于附件)被传递到attachment_fields_to_edit filter
, 因此,您可以访问附件的所有属性。
是的,这可以在不修改核心的情况下完成。attachment_fields_to_edit
是您需要的过滤器。
将此添加到您的函数中。php或插件:
add_filter( \'attachment_fields_to_edit\', \'customize_attachment_fields_to_edit\', 11, 2 ); // Note priority 11 to ensure that the customizations are not overridden
function customize_attachment_fields_to_edit( $form_fields, $post ) {
$form_fields[\'buttons\'] = array(
\'label\' => \'\',
\'value\' => \'\',
\'input\' => \'html\'
);
$attachment_id = $post->ID;
$form_fields[\'buttons\'][\'html\'] = "<h1>Custom stuff here... Attachment ID: $attachment_id</h1>";
return $form_fields;
}
备注:过滤器
attachment_fields_to_edit
应用于
line 1147 in \\wp-admin\\includes\\media.php
设置按钮输出的大多数代码都是onlines 1311-1342 in \\wp-admin\\includes\\media.php
, 虽然上面有一些变量line 1311
用于确定如何生成未传递到attachment_fields_to_edit filter
.
本质上,您需要复制核心代码并将其添加到customize_attachment_fields_to_edit
回调。然后格式化复制的代码以满足您的需要,但请记住,您可能需要自己创建一些VAR($send
, 例如,如果确实希望尽可能接近地复制核心代码)。
这里有一个link Andy Blackwell编写的关于定制WP库的教程。