关于特色形象的一个棘手问题

时间:2016-03-06 作者:I.Alex

所以我试着用这个2-3,但我没能成功。我有这个主题:Aruna和他有前端帖子,当我发布图片时,我需要写标题并从我的电脑上传图片,你可以在图片上看到:enter image description here

好的,在我完成这项工作后,他将我上传的图像按主题放入一个自定义字段:enter image description here

诀窍是,当我想从前端上传图像时,我想将其自动放在特色图像上。如果我使用用户提交的帖子插件,并且我从他那里发帖,那么它会起作用。。但我想在自己的前端进行修改。这对我来说很重要,因为我在facebook和其他社交媒体上分享了很多信息,功能图片可以做到这一点:)我不知道在这里放什么代码,但我试着向你展示:功能。php

case "window-image":
            $format = \'image\';
            $title = esc_html($_POST[\'title_image\']);
            $image = esc_url($_POST[\'postimage\']);
            $tags = $_POST[\'tags_image\'];
            $comments = isset($_POST[\'comments_image\']) ? 1 : 0;
            $anonymous = isset($_POST[\'anonymous_image\']) ? 1 : 0;

            $comment_status = $comments == 1 ? \'open\' : \'closed\';

            $user_id = $id;

            if(($_FILES[\'image_imagepost\'][\'error\'] != 0 && $image == \'\') || $title == \'\') {
                wp_redirect(home_url(\'/\') . \'?posterror=1\');
                exit; 
            }

            $post = array(
              \'comment_status\' => $comment_status,
              \'ping_status\'    => \'open\',
              \'post_author\'    => $user_id,
              \'post_content\'   => \'\',
              \'post_status\'    => $status,
              \'post_title\'     => $title,
              \'post_type\'      => \'post\',
            );  
            $post_id = wp_insert_post($post);

            if($image != \'\') {
                $pattern = \'~\' . get_bloginfo(\'url\') . \'~\';
                if(preg_match($pattern, $image) ) {
                    add_post_meta($post_id, \'_standard_image\', $image);
                }
                else {
                    //we have an external image :) we save it with the cURL library
                    $filedetails = pathinfo($image);
                    $mime = \'\';
                    if($filedetails[\'extension\'] == \'jpe\' || $filedetails[\'extension\'] == \'jpg\' || $filedetails[\'extension\'] == \'jpeg\') {
                        $mime = \'image/jpeg\';
                    }
                    elseif($filedetails[\'extension\'] == \'png\') {
                        $mime = \'image/png\';
                    }
                    elseif($filedetails[\'extension\'] == \'gif\') {
                        $mime = \'image/gif\';
                    }
                    if($mime != \'\') {
                        require_once( ABSPATH . "wp-admin" . \'/includes/image.php\' );
                        $ch = curl_init($image);
                        $uploaddir = wp_upload_dir();
                        $filename = $filedetails[\'filename\'] . rand(1, 9999) . \'.\' . $filedetails[\'extension\']; 
                        //we add some random digits to make sure it\'s unique
                        $fp = fopen(trailingslashit($uploaddir[\'path\']) . $filename, \'wb\');
                        curl_setopt($ch, CURLOPT_FILE, $fp);
                        curl_setopt($ch, CURLOPT_HEADER, 0);
                        curl_exec($ch);
                        curl_close($ch);
                        fclose($fp);

                        $guid = trailingslashit($uploaddir[\'url\'])  . $filename;
                        $attachment = array(
                            \'post_mime_type\' => $mime,
                            \'guid\' => $guid,
                            \'post_title\' => \'[External image] : \' . $filedetails[\'filename\'] ,
                            \'post_content\' => \'\',
                            \'post_author\' => $user_id,
                            \'post_status\' => \'inherit\',
                            \'post_date\' => date( \'Y-m-d H:i:s\' ),
                            \'post_date_gmt\' => date( \'Y-m-d H:i:s\' )
                        );

                        // Add the file to the media library and generate thumbnail.
                        $attach_id = wp_insert_attachment( $attachment, trailingslashit($uploaddir[\'url\']) . $filename, $post_id );
                        $attach_data = wp_generate_attachment_metadata( $attach_id, trailingslashit($uploaddir[\'path\']) . $filename );
                        wp_update_attachment_metadata( $attach_id,  $attach_data );

                        add_post_meta($post_id, \'_standard_image\', trailingslashit($uploaddir[\'url\']) . $filename);
                    }

                }
            }
            else {
                if($_FILES[\'image_imagepost\'][\'error\'] == 0) {
                    $image = $tmp->saveUpload( \'image_imagepost\' );
                    add_post_meta($post_id, \'_standard_image\', wp_get_attachment_url($image[\'attachment_id\']) );
                }
            }
前端HTML代码

<textarea name="title_image" class="form-control" rows="1" placeholder="<?php _e(\'Post title\', \'Aruna\');?>"></textarea>        
                            <input type="file" name="image_imagepost" />

<input type="file" name="image_imagepost" /> this do the trick for upload on custom field ...
我不明白,当我发布视频(yt)时,他会自动将缩略图放在特色图像上,我尝试查看视频和图像,但没有成功:以下是视频代码:

    <?php
case "window-video":
                $format = \'video\';
                $title = esc_html($_POST[\'title_video\']);
                $tags = $_POST[\'tags_video\'];

                if($title == \'\') {
                    wp_redirect(home_url(\'/\') . \'?posterror=1\');
                    exit; 
                }

                $comments = isset($_POST[\'comments_video\']) ? 1 : 0;
                $anonymous = isset($_POST[\'anonymous_video\']) ? 1 : 0;

                $comment_status = $comments == 1 ? \'open\' : \'closed\';

                $user_id = $id;

                $post = array(
                  \'comment_status\' => $comment_status,
                  \'ping_status\'    => \'open\',
                  \'post_author\'    => $user_id,
                  \'post_content\'   => \'\',
                  \'post_status\'    => $status,
                  \'post_title\'     => $title,
                  \'post_type\'      => \'post\',
                );  
                $post_id = wp_insert_post($post);
                if(isset($_FILES[\'video_file\']) && $_FILES[\'video_file\'][\'error\'] == 0) {
                    $video_file = $tmp->saveUpload( \'video_file\' );
                    add_post_meta($post_id, \'_video_localvideo\', wp_get_attachment_url($video_file[\'attachment_id\']) );
                }
                else {
                    $video = esc_url($_POST[\'video\']);
                    if (strpos($video,\'youtube\') !== false) {
                        //it\'s youtube, we need toget the thumbnail! :)
                        //we get the id of the video first
                        $videotemp = explode(\'/watch?v=\', $video);
                        if(isset($videotemp[1]) && $videotemp[1] != \'\') {
                            $idvideo = $videotemp[1];
                            //we have the id, now we put the thumbnail
                            $url_video = \'http://i1.ytimg.com/vi/\' . $idvideo . \'/hqdefault.jpg\';
                        }
                    }
                    elseif (strpos($video,\'vimeo\') !== false) {
                        //it\'s youtube, we need toget the thumbnail! :)
                        //we get the id of the video first
                        $videotemp = explode(\'vimeo.com/\', $video);
                        if(isset($videotemp[1]) && $videotemp[1] != \'\') {
                            $idvideo = $videotemp[1];
                            //we have the id, now we put the thumbnail
                            $json_vimeo = \'http://vimeo.com/api/v2/video/\' . $idvideo . \'.json\';
                            $ch = curl_init();
                            $timeout = 5;
                            curl_setopt($ch, CURLOPT_URL, $json_vimeo);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                            $json_vimeo = curl_exec($ch);
                            curl_close($ch);
                            $jsontemp = json_decode($json_vimeo, true);
                            if(isset($jsontemp[0]) && isset($jsontemp[0][\'thumbnail_large\']) && $jsontemp[0][\'thumbnail_large\'] != \'\') {
                                $url_video = $jsontemp[0][\'thumbnail_large\'];
                            }
                        }
                    }
                    if(isset($url_video) && $url_video != \'\') {
                        //we have an external youtube image :) we save it with the cURL library
                        $filedetails = pathinfo($url_video);
                        $mime = \'\';
                        if($filedetails[\'extension\'] == \'jpe\' || $filedetails[\'extension\'] == \'jpg\' || $filedetails[\'extension\'] == \'jpeg\') {
                            $mime = \'image/jpeg\';
                        }
                        elseif($filedetails[\'extension\'] == \'png\') {
                            $mime = \'image/png\';
                        }
                        elseif($filedetails[\'extension\'] == \'gif\') {
                            $mime = \'image/gif\';
                        }
                        if($mime != \'\') {
                            require_once( ABSPATH . "wp-admin" . \'/includes/image.php\' );
                            $ch = curl_init($url_video);
                            $uploaddir = wp_upload_dir();
                            $filename = $filedetails[\'filename\'] . rand(1, 9999) . \'.\' . $filedetails[\'extension\']; 
                            //we add some random digits to make sure it\'s unique
                            $fp = fopen(trailingslashit($uploaddir[\'path\']) . $filename, \'wb\');
                            curl_setopt($ch, CURLOPT_FILE, $fp);
                            curl_setopt($ch, CURLOPT_HEADER, 0);
                            curl_exec($ch);
                            curl_close($ch);
                            fclose($fp);

                            $guid = trailingslashit($uploaddir[\'url\'])  . $filename;
                            $attachment = array(
                                \'post_mime_type\' => $mime,
                                \'guid\' => $guid,
                                \'post_title\' => \'[External image] : \' . $filedetails[\'filename\'] ,
                                \'post_content\' => \'\',
                                \'post_author\' => $user_id,
                                \'post_status\' => \'inherit\',
                                \'post_date\' => date( \'Y-m-d H:i:s\' ),
                                \'post_date_gmt\' => date( \'Y-m-d H:i:s\' )
                            );

                            // Add the file to the media library and generate thumbnail.
                            $attach_id = wp_insert_attachment( $attachment, trailingslashit($uploaddir[\'url\']) . $filename, $post_id );
                            $attach_data = wp_generate_attachment_metadata( $attach_id, trailingslashit($uploaddir[\'path\']) . $filename );
                            wp_update_attachment_metadata( $attach_id,  $attach_data );

                            update_post_meta($post_id, \'_thumbnail_id\', $attach_id);
                        }
                    }

                    add_post_meta($post_id, \'_video_externalvideo\', $video);
                }

                $nsfw = isset($_POST[\'nsfw_video\']) ? 1 : 2;
                add_post_meta($post_id, \'_video_nsfw\', $nsfw);
                add_post_meta($post_id, \'_anonymous\', $anonymous);
?>
这是图像代码:

case "window-image":
            $format = \'image\';
            $title = esc_html($_POST[\'title_image\']);
            $image = esc_url($_POST[\'postimage\']);
            $tags = $_POST[\'tags_image\'];
            $comments = isset($_POST[\'comments_image\']) ? 1 : 0;
            $anonymous = isset($_POST[\'anonymous_image\']) ? 1 : 0;

            $comment_status = $comments == 1 ? \'open\' : \'closed\';

            $user_id = $id;

            if(($_FILES[\'image_imagepost\'][\'error\'] != 0 && $image == \'\') || $title == \'\') {
                wp_redirect(home_url(\'/\') . \'?posterror=1\');
                exit; 
            }

            $post = array(
              \'comment_status\' => $comment_status,
              \'ping_status\'    => \'open\',
              \'post_author\'    => $user_id,
              \'post_content\'   => \'\',
              \'post_status\'    => $status,
              \'post_title\'     => $title,
              \'post_type\'      => \'post\',
            );  
            $post_id = wp_insert_post($post);

            if($image != \'\') {
                $pattern = \'~\' . get_bloginfo(\'url\') . \'~\';
                if(preg_match($pattern, $image) ) {
                    add_post_meta($post_id, \'_standard_image\', $image);
                }
                else {
                    //we have an external image :) we save it with the cURL library
                    $filedetails = pathinfo($image);
                    $mime = \'\';
                    if($filedetails[\'extension\'] == \'jpe\' || $filedetails[\'extension\'] == \'jpg\' || $filedetails[\'extension\'] == \'jpeg\') {
                        $mime = \'image/jpeg\';
                    }
                    elseif($filedetails[\'extension\'] == \'png\') {
                        $mime = \'image/png\';
                    }
                    elseif($filedetails[\'extension\'] == \'gif\') {
                        $mime = \'image/gif\';
                    }
                    if($mime != \'\') {
                        require_once( ABSPATH . "wp-admin" . \'/includes/image.php\' );
                        $ch = curl_init($image);
                        $uploaddir = wp_upload_dir();
                        $filename = $filedetails[\'filename\'] . rand(1, 9999) . \'.\' . $filedetails[\'extension\']; 
                        //we add some random digits to make sure it\'s unique
                        $fp = fopen(trailingslashit($uploaddir[\'path\']) . $filename, \'wb\');
                        curl_setopt($ch, CURLOPT_FILE, $fp);
                        curl_setopt($ch, CURLOPT_HEADER, 0);
                        curl_exec($ch);
                        curl_close($ch);
                        fclose($fp);

                        $guid = trailingslashit($uploaddir[\'url\'])  . $filename;
                        $attachment = array(
                            \'post_mime_type\' => $mime,
                            \'guid\' => $guid,
                            \'post_title\' => \'[External image] : \' . $filedetails[\'filename\'] ,
                            \'post_content\' => \'\',
                            \'post_author\' => $user_id,
                            \'post_status\' => \'inherit\',
                            \'post_date\' => date( \'Y-m-d H:i:s\' ),
                            \'post_date_gmt\' => date( \'Y-m-d H:i:s\' )
                        );

                        // Add the file to the media library and generate thumbnail.
                        $attach_id = wp_insert_attachment( $attachment, trailingslashit($uploaddir[\'url\']) . $filename, $post_id );
                        $attach_data = wp_generate_attachment_metadata( $attach_id, trailingslashit($uploaddir[\'path\']) . $filename );
                        wp_update_attachment_metadata( $attach_id,  $attach_data );

                        add_post_meta($post_id, \'_standard_image\', trailingslashit($uploaddir[\'url\']) . $filename);
                    }

                }
            }
            else {
                if($_FILES[\'image_imagepost\'][\'error\'] == 0) {
                    $image = $tmp->saveUpload( \'image_imagepost\' );
                    add_post_meta($post_id, \'_standard_image\', wp_get_attachment_url($image[\'attachment_id\']) );
                }
            }

            $nsfw = isset($_POST[\'nsfw_image\']) ? 1 : 2;
            add_post_meta($post_id, \'_standard_nsfw\', $nsfw);
            add_post_meta($post_id, \'_anonymous\', $anonymous);

            break;

Thanks

1 个回复
SO网友:thebigtine

之后

add_post_meta($post_id, \'_standard_image\', trailingslashit($uploaddir[\'url\']) . $filename);
粘贴

set_post_thumbnail($post_id, $attach_id);
这样做的目的是获取在此函数中创建的附件,并将其添加为特征图像。

希望这有帮助。

相关推荐

Front-End Post Submission

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