将所选的图像文件输入设置为wp前端的特色图像

时间:2013-10-15 作者:gurung

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 要设置为特色图像/后期缩略图的图像输入。请提出解决方案。

这里的底线是,我对设置帖子缩略图没有问题,但问题是可以选择将任何上传的图像选择为帖子缩略图,或者至少选择第一个图像,而不是当前代码设置的最后一个图像。

脚注:我刚刚把我想到的必要内容放在这里。如果你想了解更多信息,请告诉我。提前谢谢。

1 个回复
最合适的回答,由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\';
此引用aselect 字段如下所示。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 用于编写更可读的代码。

结束

相关推荐

Front-End Post Submission

我正在尝试添加一个表单,用户可以从前端提交帖子。我正在学习本教程:http://wpshout。com/wordpress从前端提交帖子/我正在做的是添加this code 到我的一个页面模板。表单显示正常,但当我单击“提交”按钮时,它会显示“Page not found error“”许多评论者说这不起作用。谁能给我指出正确的方向吗?代码是否不完整?有缺陷吗?我做错什么了吗?谢谢Towfiq I。