有没有什么方法可以防止内容编辑在上传图片时选择“全屏”选项?我希望他们只有“缩略图”,“中等”和“大”选项。我曾经使用剪刀插件来做这件事,但在Wordpress2.9这个插件不再工作。
z4bn682m1#
我认为你不能禁用大尺寸,但是你可以设置它的宽度和高度与中等尺寸相同。它在设置→媒体下
vxf3dgd42#
你可以通过强制WordPress不显示全尺寸选项来达到这个效果。创建大小单选按钮的函数在wp-admin/includes/media.php中,名为image_size_input_fields。据我所知,这个函数没有filter或action钩子,但是调用它的函数(image_attachment_fields_to_edit)有一个filter钩子attachment_fields_to_edit。所以基本上我们可以使用filter钩子来用我们自己的函数覆盖这两个函数,我们只会做很小的修改。这将在标准的functions.php文件中工作,或者我想您可以将其合并到插件中。首先,添加新筛选器:
wp-admin/includes/media.php
image_size_input_fields
image_attachment_fields_to_edit
attachment_fields_to_edit
add_filter('attachment_fields_to_edit', 'MY_image_attachment_fields_to_edit', 11, 2);
接下来我们创建两个函数,在这个例子中,我只是在函数名前加上了前缀MY_:
MY_
function MY_image_attachment_fields_to_edit($form_fields, $post) { if ( substr($post->post_mime_type, 0, 5) == 'image' ) { $alt = get_post_meta($post->ID, '_wp_attachment_image_alt', true); if ( empty($alt) ) $alt = ''; $form_fields['post_title']['required'] = true; $form_fields['image_alt'] = array( 'value' => $alt, 'label' => __('Alternate text'), 'helps' => __('Alt text for the image, e.g. “The Mona Lisa”') ); $form_fields['align'] = array( 'label' => __('Alignment'), 'input' => 'html', 'html' => image_align_input_fields($post, get_option('image_default_align')), ); $form_fields['image-size'] = MY_image_size_input_fields( $post, get_option('image_default_size', 'medium') ); } else { unset( $form_fields['image_alt'] ); } return $form_fields; }
与普通WordPress函数相比,这里唯一的变化是我们调用MY_image_size_input_fields而不是image_size_input_fields。现在执行实际隐藏的函数是:
MY_image_size_input_fields
function MY_image_size_input_fields( $post, $check = '' ) { // get a list of the actual pixel dimensions of each possible intermediate version of this image /* $size_names = array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full size')); */ $size_names = array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large')); if ( empty($check) ) $check = get_user_setting('imgsize', 'medium'); echo '<pre>'; print_r($check); echo '</pre>'; foreach ( $size_names as $size => $label ) { $downsize = image_downsize($post->ID, $size); $checked = ''; // is this size selectable? $enabled = ( $downsize[3] || 'large' == $size ); $css_id = "image-size-{$size}-{$post->ID}"; // if this size is the default but that's not available, don't select it if ( $size == $check ) { if ( $enabled ) $checked = " checked='checked'"; else $check = ''; } elseif ( !$check && $enabled && 'thumbnail' != $size ) { // if $check is not enabled, default to the first available size that's bigger than a thumbnail $check = $size; $checked = " checked='checked'"; } $html = "<div class='image-size-item'><input type='radio' " . ( $enabled ? '' : "disabled='disabled' " ) . "name='attachments[$post->ID][image-size]' id='{$css_id}' value='{$size}'$checked />"; $html .= "<label for='{$css_id}'>$label</label>"; // only show the dimensions if that choice is available if ( $enabled ) $html .= " <label for='{$css_id}' class='help'>" . sprintf( __("(%d × %d)"), $downsize[1], $downsize[2] ). "</label>"; $html .= '</div>'; $out[] = $html; } return array( 'label' => __('Size'), 'input' => 'html', 'html' => join("\n", $out), ); }
在最后一个函数中,只有两点改变。在顶部,我们去掉了$size_names数组定义中对'Full Size'的引用。然后,我们修改了$enabled = ( $downsize[3] || 'large' == $size );行。我们只是用'large' == $size替换了'full' == $size。下面是结果的截图:
$enabled = ( $downsize[3] || 'large' == $size );
'large' == $size
'full' == $size
2条答案
按热度按时间z4bn682m1#
我认为你不能禁用大尺寸,但是你可以设置它的宽度和高度与中等尺寸相同。它在设置→媒体下
vxf3dgd42#
你可以通过强制WordPress不显示全尺寸选项来达到这个效果。创建大小单选按钮的函数在
wp-admin/includes/media.php
中,名为image_size_input_fields
。据我所知,这个函数没有filter或action钩子,但是调用它的函数(
image_attachment_fields_to_edit
)有一个filter钩子attachment_fields_to_edit
。所以基本上我们可以使用filter钩子来用我们自己的函数覆盖这两个函数,我们只会做很小的修改。
这将在标准的functions.php文件中工作,或者我想您可以将其合并到插件中。
首先,添加新筛选器:
接下来我们创建两个函数,在这个例子中,我只是在函数名前加上了前缀
MY_
:与普通WordPress函数相比,这里唯一的变化是我们调用
MY_image_size_input_fields
而不是image_size_input_fields
。现在执行实际隐藏的函数是:
在最后一个函数中,只有两点改变。在顶部,我们去掉了$size_names数组定义中对'Full Size'的引用。然后,我们修改了
$enabled = ( $downsize[3] || 'large' == $size );
行。我们只是用'large' == $size
替换了'full' == $size
。下面是结果的截图: