我正在创建一个自定义帖子类型“gallery”,管理员应该能够在其中上载图像(这些图像将附加到帖子)。
问题是,对于这种帖子类型,“编辑器”元框被禁用。我需要一种方法来添加图像上传弹出框,就像帖子一样。我该怎么做?
或者最好创建自己的上传程序?如果是这样,我如何将上传的图像附加到正在创建的帖子(图库)?
附件是如何工作的?它们也是自定义的帖子类型吗?
我正在创建一个自定义帖子类型“gallery”,管理员应该能够在其中上载图像(这些图像将附加到帖子)。
问题是,对于这种帖子类型,“编辑器”元框被禁用。我需要一种方法来添加图像上传弹出框,就像帖子一样。我该怎么做?
或者最好创建自己的上传程序?如果是这样,我如何将上传的图像附加到正在创建的帖子(图库)?
附件是如何工作的?它们也是自定义的帖子类型吗?
At the top of wp-admin/edit-form-advanced.php
我看到以下代码似乎与媒体上载程序相关:
if ( post_type_supports($post_type, \'editor\') || post_type_supports($post_type, \'thumbnail\') ) {
add_thickbox();
wp_enqueue_script(\'media-upload\');
}
您需要自己添加这些。add_thickbox()
将脚本和样式都排队,因此请确保print_styles
, 像print_scripts
也无法打印样式。add_action(\'admin_print_styles-post-new.php\', \'wpa4016_add_media_upload_scripts\');
add_action(\'admin_print_styles-post.php\', \'wpa4016_add_media_upload_scripts\');
function wpa4016_add_media_upload_scripts()
{
if ($GLOBALS[\'post_type\'] == \'wpa4016\') {
add_thickbox();
wp_enqueue_script(\'media-upload\');
}
}
现在我们需要添加上传按钮。我懂了the_editor()
, 显示编辑器的函数有一个参数$media_buttons
, 如果我们开始true
它基本上执行do_action(\'media_buttons\')
. 这依次调用media_buttons()
, 哪个呼叫_media_button()
对于每种媒体类型(图像、视频、音频等)。所以我们自己做!add_action(\'edit_form_advanced\', \'wpa4016_edit_form_advanced\');
function wpa4016_edit_form_advanced()
{
if ($GLOBALS[\'post_type\'] == \'wpa4016\') {
echo _media_button(__(\'Add an Image\'), \'images/media-button-image.gif?ver=20100531\', \'image\');
}
}
附件确实是类型的自定义帖子attachment
, 用他们的post_parent
设置他们所属的岗位。图像有两个元字段:_wp_attached_file
包含文件名,_wp_attachment_metadata
包含一个数组,其中包含图像EXIF数据和指向同一图像不同大小的指针。您可以使用wp_insert_attachment()
, 但我相信你仍然需要自己处理上传。上述答案非常有用,但遗憾的是,wp 3.5不推荐使用\\u media\\u button()函数
所以我改变了上面的代码如下:
替换此行代码echo _media_button(__(\'Add an Image\'), \'images/media-button-image.gif?ver=20100531\', \'image\');
使用以下行:
$img = \'<span class="wp-media-buttons-icon"></span> \';
echo \'<a href="#" class="button insert-media add_media" data-editor="\' . esc_attr( $editor_id ) . \'" title="\' . esc_attr__( \'Add Media\' ) . \'">\' . $img . __( \'Add Media\' ) . \'</a>\';
最后,我使用代码将媒体按钮添加到我的图库帖子类型如下add_action(\'admin_print_styles-post-new.php\', \'gallery_add_media_upload_scripts\');
add_action(\'admin_print_styles-post.php\', \'gallery_add_media_upload_scripts\');
function gallery_add_media_upload_scripts()
{
if ($GLOBALS[\'post_type\'] == \'gallery\') {
add_thickbox();
wp_enqueue_script(\'media-upload\');
}
}
add_action(\'edit_form_advanced\', \'gallery_edit_form_advanced\');
function gallery_edit_form_advanced()
{
if ($GLOBALS[\'post_type\'] == \'gallery\') {
$img = \'<span class="wp-media-buttons-icon"></span> \';
echo \'<a href="#" class="button insert-media add_media" data-editor="\' . esc_attr( $editor_id ) . \'" title="\' . esc_attr__( \'Add Media\' ) . \'">\' . $img . __( \'Add Media\' ) . \'</a>\';
}
}