如何从url以编程方式设置精选图像?

Cri*_*ter 5 php wordpress image programmatically

我有一些帖子ID,我想从同一个网址设置这些帖子的特色图片.

这是我添加的邮政编码:

$catid = get_cat_ID("XX Cat");

$my_post = array(); 
$my_post['post_title'] = $title; 
$my_post['post_content'] = $description; 
$my_post['post_status'] = 'publish'; 
$my_post['post_author'] = 1; 
$my_post['post_category'] = array( $catid ); 

$post_id = wp_insert_post( $my_post );
Run Code Online (Sandbox Code Playgroud)

示例:post_id = 1我想将精选图像设置为:example.com/image.png

我怎样才能做到这一点?

Has*_*eed 12

您可以将图像设置为媒体库中的后期特色缩略图.要在媒体库中添加图像,您需要将其上传到服务器.

试试这段代码:

 // Add Featured Image to Post
    $image_url        = 'http://s.wordpress.org/style/images/wp-header-logo.png'; // Define the image URL here
    $image_name       = 'wp-header-logo.png';
    $upload_dir       = wp_upload_dir(); // Set upload folder
    $image_data       = file_get_contents($image_url); // Get image data
    $unique_file_name = wp_unique_filename( $upload_dir['path'], $image_name ); // Generate unique name
    $filename         = basename( $unique_file_name ); // Create image file name

    // Check folder permission and define file location
    if( wp_mkdir_p( $upload_dir['path'] ) ) {
        $file = $upload_dir['path'] . '/' . $filename;
    } else {
        $file = $upload_dir['basedir'] . '/' . $filename;
    }

    // Create the image  file on the server
    file_put_contents( $file, $image_data );

    // Check image file type
    $wp_filetype = wp_check_filetype( $filename, null );

    // Set attachment data
    $attachment = array(
        'post_mime_type' => $wp_filetype['type'],
        'post_title'     => sanitize_file_name( $filename ),
        'post_content'   => '',
        'post_status'    => 'inherit'
    );

    // Create the attachment
    $attach_id = wp_insert_attachment( $attachment, $file, $post_id );

    // Include image.php
    require_once(ABSPATH . 'wp-admin/includes/image.php');

    // Define attachment metadata
    $attach_data = wp_generate_attachment_metadata( $attach_id, $file );

    // Assign metadata to attachment
    wp_update_attachment_metadata( $attach_id, $attach_data );

    // And finally assign featured image to post
    set_post_thumbnail( $post_id, $attach_id );
Run Code Online (Sandbox Code Playgroud)

参考文献:http://www.wpexplorer.com/wordpress-featured-image-url/

根据您的要求进行了修改:为此目的忽略wordpress标准并将您的所有帖子单个图像上传到您的自定义文件夹,并将此图片路径或直接外部图片网址添加到帖子作为额外属性元字段,当您在主题上显示帖子时在post id的帮助下使用你的img.演示代码:用于设置图像

<?php
   update_post_meta (  7, 'imgkey', 'www.url.path' );//7 is post id
?>
Run Code Online (Sandbox Code Playgroud)

在您想要显示它的主题页面上获取图像

<?php
$img_value = get_post_meta( get_the_ID(), 'imgkey', true );
?>
<img src="<?php echo $img_value?>">
Run Code Online (Sandbox Code Playgroud)

请注意,如果您是wordpress post自定义元字段的新用户,请阅读本文 https://codex.wordpress.org/Custom_Fields

关于自定义字段的非官方文章:https://premium.wpmudev.org/blog/creating-custom-fields -manually

  • 工作完美。 (2认同)

Nar*_*raj 6

如果您必须加载图像然后指定为帖子的缩略图,则更快的方法是使用 media_sideload_image 然后使用 set_post_thumbnail

https://developer.wordpress.org/reference/functions/media_sideload_image/

$url     = "http://url-of-the-image.jpg";
$post_id = [post id]
$desc    = "image description";

$image = media_sideload_image( $url, $post_id, $desc,'id' );

set_post_thumbnail( $post_id, $image );
Run Code Online (Sandbox Code Playgroud)

  • 现在这才是真正的答案。 (3认同)