Создать пост WordPress из избранного изображения и ACF - PullRequest
0 голосов
/ 20 февраля 2020

Я использую эту функцию:

function create_post() {
ob_start();
if(isset($_POST['new_post']) == '1') {
    $post_title = $_POST['post_title'];
    $post_category = $_POST['cat'];
    $post_content = $_POST['post_content'];

    $new_post = array(
          'ID' => '',
          'post_author' => $user->ID, 
          'post_category' => array($post_category),
          'post_content' => $post_content, 
          'post_title' => $post_title,
          'post_status' => 'publish'
        );

    $post_id = wp_insert_post($new_post);

    // This will redirect you to the newly created post
    $post = get_post($post_id);
    wp_redirect($post->guid);
}      
?>      

<form method="post" action=""> 
    <input type="text" name="post_title" size="45" id="input-title" placeholder="Voer hier de titel van het nieuwsbericht in"/>
    <?php wp_dropdown_categories('orderby=name&hide_empty=0&exclude=1&hierarchical=1'); ?>
    <textarea rows="5" name="post_content" cols="66" id="text-desc" placeholder="Voer hier de tekst van het bericht in"></textarea>
    <p>
    Kies hieronder de afbeelding van het nieuwsbericht. 
    </p>
    <input type="file" id="featured_image" name="featured_image" accept="image/*">
    <br/><br/>
    <input type="hidden" name="new_post" value="1"/> 
    <input class="subput round" type="submit" name="submit" value="Nieuwsbericht aanmaken"/>
</form>

<?php
return ob_get_clean();
}
add_shortcode('create_post', 'create_post');

Она создает сообщение при отправке, но как добавить изображение, выбранное в файле ввода type = "file", в качестве избранного изображения?

Также я хочу заполнить поля ACF этой формой внешнего интерфейса.

1 Ответ

0 голосов
/ 20 февраля 2020

Я думаю, что вы ищете set_post_thumbnail (). Вот хороший учебник здесь , на котором вы можете основывать свой код.

Выдержка с соответствующим кодом:

<?PHP
//prepare upload image to WordPress Media Library
    $upload = wp_upload_bits( $IMGFileName, null, file_get_contents( $IMGFilePath, FILE_USE_INCLUDE_PATH ) );
// check and return file type
    $imageFile  = $upload['file'];
    $wpFileType = wp_check_filetype( $imageFile, null );
// Attachment attributes for file
    $attachment = array(
        'post_mime_type' => $wpFileType['type'],  // file type
        'post_title'     => sanitize_file_name( $imageFile ),  // sanitize and use image name as file name
        'post_content'   => '',  // could use the image description here as the content
        'post_status'    => 'inherit'
    );
// insert and return attachment id
    $attachmentId = wp_insert_attachment( $attachment, $imageFile, $postId );
// insert and return attachment metadata
    $attachmentData = wp_generate_attachment_metadata( $attachmentId, $imageFile );
// update and return attachment metadata
    wp_update_attachment_metadata( $attachmentId, $attachmentData );
// finally, associate attachment id to post id
    $success = set_post_thumbnail( $postId, $attachmentId );
// was featured image associated with post?
    if ( $success ) {
        $message = $IMGFileName . ' has been added as featured image to post.';
    } else {
        $message = $IMGFileName . ' has NOT been added as featured image to post.';
    }
?>
...