Sorunu anlamak için; bazı değişkenleri ekrana yazdırtmayı denermisin hocam.

Şöyle;

<?php

if(!$_POST || $_GET['sifre'] != 'benim_ozel_sifrem') 
	die();

/**
 * Post dizisi, buraya bir çok özellik gelebilir tamamını codex sayfasından görebilirsin
 */
$post_data = array();

foreach ($_POST as $key => $value) {
      if($key != 'resim_url')
	$post_data[$key] = $value;
}

$post_id = wp_insert_post( $post_data ); //$post_id eklediğimiz yaznının ID'si şimdi buna özel alan vs. ekleyebiliriz

/**
 * Post'umuza özel alan ekledik
 */
add_post_meta($post_id, 'ozel_alan_adi', 'Özel alan değeri', true);

/**
 * $image_url uzaktaki resmin url si olmalı
 */
$image_url = $_POST['resim_url'];

/**
 * Öne çıkarılmış görseli ekliyeceğiz
 */
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$filename = basename($image_url);
if(wp_mkdir_p($upload_dir['path']))
    $file = $upload_dir['path'] . '/' . $filename;
else
    $file = $upload_dir['basedir'] . '/' . $filename;
file_put_contents($file, $image_data);

$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => sanitize_file_name($filename),
    'post_content' => '',
    'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );

var_dump($post_id);
var_dump($attach_id);
var_dump(set_post_thumbnail( $post_id, $attach_id ));
bu şekilde çalıştırınca, çıktısı ne şekilde oluyor?