SCENARIO : 我允许从前端创建帖子。表单还有四个图像上载字段。我将下面粘贴的代码用于图像附件和设置帖子缩略图。
//insert attachments
if ($_FILES) {
foreach ($_FILES as $file => $array) {
$newupload = insert_attachment($file,$pid);
}
}
//attachment helper function
function insert_attachment($file_handler,$post_id,$setthumb=\'false\') {
if ($_FILES[$file_handler][\'error\'] !== UPLOAD_ERR_OK){ return __return_false();
}
require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
require_once(ABSPATH . "wp-admin" . \'/includes/file.php\');
require_once(ABSPATH . "wp-admin" . \'/includes/media.php\');
$attach_id = media_handle_upload( $file_handler, $post_id );
//set post thumbnail
if ($setthumb) update_post_meta($post_id,\'_thumbnail_id\',$attach_id);
return $attach_id;
}
通过此代码设置的后期缩略图/特色图像是
LAST 上载的图像。我试着在谷歌上搜索“从前端wordpress设置帖子缩略图”,浏览了很多文章,但没有一篇接近我的要求。我在SE遇到的大多数帖子都是关于前端帖子的
setting the featured image 或关于
multiple uploads. 我还检查了所有提示的建议问题,而我写这个问题只是为了确定之前是否有人问过。”
如果重要的话,这里是表单中使用的html,非常标准。
<input type="file" name="image-one" id="image-one"/>
<input type="file" name="image-two" id="image-two"/>
<input type="file" name="image-three" id="image-three"/>
REQUEST : 如果我能得到一个解决方案,帮助将任何选定的图像输入字段指定为特征图像,那将是非常棒的,但目前,至少我需要设置
FIRST 要设置为特色图像/后期缩略图的图像输入。请提出解决方案。
这里的底线是,我对设置帖子缩略图没有问题,但问题是可以选择将任何上传的图像选择为帖子缩略图,或者至少选择第一个图像,而不是当前代码设置的最后一个图像。
脚注:我刚刚把我想到的必要内容放在这里。如果你想了解更多信息,请告诉我。提前谢谢。
最合适的回答,由SO网友:Michael Cannon 整理而成
Re: set the FIRST image input to be set as a featured-image/post-thumbnail
既然你知道
input name="image-one"
将成为您的特色图片,您可以查看
image-one
作为您的
$file_handler
中的值
function insert_attachment
在呼叫之后
media_handle_upload
, 然后设置缩略图。请参阅以下代码。
请注意,我设置了image-one
作为每次查找和传递的字段名。
<?php
$thumbnail_field = \'image-one\';
if ( ! empty( $_FILES ) ) {
foreach ( $_FILES as $file => $array )
$newupload = insert_attachment( $file, $pid, $thumbnail_field );
}
//attachment helper function
function insert_attachment( $file_handler, $post_id, $set_thumb = false ) {
if ( UPLOAD_ERR_OK !== $_FILES[ $file_handler ][\'error\'] )
return false;
require_once ABSPATH . \'wp-admin/includes/image.php\';
require_once ABSPATH . \'wp-admin/includes/file.php\';
require_once ABSPATH . \'wp-admin/includes/media.php\';
$attach_id = media_handle_upload( $file_handler, $post_id );
//set post thumbnail (featured)
if ( $attach_id && $set_thumb )
update_post_meta( $post_id, \'_thumbnail_id\', $attach_id );
return $attach_id;
}
?>
Re: assign any chosen image-input-field as a featured-image
我认为不需要这个部分,因为您应该将第一个图像字段标记为“特色图像”。提交者可能现在不想设置特色图像。
查看上述代码时,请替换第行$thumbnail_field = \'image-one\';
使用以下内容。
if ( ! empty( $_POST[ \'thumbnail-field\' ] ) )
$thumbnail_field = esc_html( $_POST[ \'thumbnail-field\' ] );
else
$thumbnail_field = \'image-one\';
此引用a
select
字段如下所示。Radio和jQuery也可以用于格式化和填充。
<label for="thumbnail-field">
Thumbnail field
<select name="thumbnail-field">
<option value="image-one">1st</option>
<option value="image-two">2nd</option>
<option value="image-three">3rd</option>
</select>
</label>
最后,您还可以在
PHP\'s POST method uploads 然后退房
WordPress\'s coding standards 用于编写更可读的代码。