通过API在POST中插入图片

时间:2012-10-18 作者:Charles Yeung

通过使用下面的代码,我可以创建一个新帖子并将图像上传到wordpress的upload 目录作为表单提交数据的附件。

    $new_post = array(
        \'post_title\' => $title,
        \'post_content\' => $content,
        \'post_status\' => \'publish\',
        \'post_date\' => date(\'Y-m-d H:i:s\'),
        \'post_author\' => $user_ID,
        \'post_type\' => \'post\',
        \'post_category\' => array(3)
    );
    $post_id = wp_insert_post($new_post);

    if (!function_exists(\'wp_generate_attachment_metadata\')){
        require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
        require_once(ABSPATH . "wp-admin" . \'/includes/file.php\');
        require_once(ABSPATH . "wp-admin" . \'/includes/media.php\');
    }
    if ($_FILES) {
        foreach ($_FILES as $file => $array) {
            if ($_FILES[$file][\'error\'] !== UPLOAD_ERR_OK) {
                return "upload error : " . $_FILES[$file][\'error\'];
            }
            $attach_id = media_handle_upload( $file, $post_id );
        }   
    }
我想插入要发布的图像,而不是替换特征图像set_post_thumbnail() 功能不合适。我发现,如果手动插入要发布的图像,它将生成如下HTML代码:

<a href="http://192.168.1.12/wp/wp-content/uploads/2012/09/H530U_08.jpg"><img class="alignnone size-medium wp-image-136" title="HARP_SH530U_0" src="http://192.168.1.12/wp/wp-content/uploads/2012/09/HARP_SH530U_08-300x167.jpg" alt="" width="300" height="167" /></a>
那么,哪种API会提供将图像插入帖子的功能,比如生成上面的HTML代码,而不是替换特征图像?

谢谢

1 个回复
最合适的回答,由SO网友:Adam 整理而成

您可以通过以下方式将上载的图像设置为后期缩略图:,

update_post_meta($post_id,\'_thumbnail_id\',$attach_id);
示例。。。

if ($_FILES) {
    foreach ($_FILES as $file => $array) {
        if ($_FILES[$file][\'error\'] !== UPLOAD_ERR_OK) {
            return "upload error : " . $_FILES[$file][\'error\'];
        }
        $attach_id = media_handle_upload( $file, $post_id );
    }   
}

update_post_meta($post_id,\'_thumbnail_id\',$attach_id);
如果要上载图像数组,则可能希望通过引用键指定哪个图像,

$file[0] //for the first image in the array
$file[1] //for the second image in the array
$file[2] //for the third image in the array
etc...
。。。但上传单个图像时,这应该不是必需的。

更新:

根据您的评论,如果您想在帖子内容的开头或之前插入图像,最好过滤the_content 像这样工作,

add_filter( \'the_content\', \'insert_img_to_post\', 20 );

function insert_img_to_post( $content ) {

    global $post;
    $post_id = $post->ID;

    if ( is_single() )

        $content = sprintf(
            \'<img class="post-icon" src="%s" alt="Post icon" title=""/>\',
            wp_get_attachment_url(get_post_meta( $post_id, \'_thumbnail_id\', true )),
            $content
        );

    return $content;
}
。。。将此函数作为单独的函数/过滤器添加到函数中。php文件。不要试图将其捆绑在您的wp_insert_post 功能,因为它不会工作。这是为了自己运行,连接到the_content 过滤,将图像插入文章顶部的内容之前,然后在其下方附加内容。

此操作当前在单个帖子页面上运行(is_single) 如果您希望它在其他内容上运行,如页面,请更改为is_page 或满足您需要的任何其他条件标记。

结束

相关推荐

images within style sheet

我希望有人能在这方面帮助我,因为这已经开始让我抓狂了。我已经搜索了好几个小时,想找到一种在我的样式表中放置图像路径的方法,但一直没有找到。路径不能是绝对路径或“主题相关”路径。解决问题的唯一方法是在html文件中添加以下内容:<style type=\"text/css\"> #menu .menu-drop .menu-label { background: url(<?php echo get_template_directory_uri().