Я пытаюсь сделать централизованную систему доставки сообщений для установки WPMU.
Настройка:
Цель:
Я хочу создать пост, который наконец должен быть доставлен в инсталляции WPMU, которые я выбрал ранее.
Проблема 1:
Я не могу правильно сохранить эскиз сообщения в новом созданном сообщении.
Проблема 2:
Как я уже упоминал, у меня есть несколько установок в моем WPMU. Таким образом, есть также множество полей ACF с разными ключами полей.
Кто-нибудь знает, есть ли простой способ получить значения полей из поста во вновь создаваемые посты?
На форумах ACF написали, что я должен использовать ключ поля, чтобы справиться с этим. Но я не хочу вручную просматривать каждый сайт, язык, чтобы получить ключи поля.
Кодекс до сих пор:
/* Pushing News Posts to previous selected hotels */
function push_posts_to_hotels( $post_id, $post, $update ) {
$slug = 'post';
$error = false;
if ( $slug != $post->post_type ) return;
if(get_field('news_events_type',$post_id) && get_field('news_events_type',$post_id) == 1) {
if(get_field('send_to_hotels',$post_id) && count(get_field('send_to_hotels',$post_id)) != 0) {
global $wpdb;
$post_meta_infos = $wpdb->get_results( "SELECT * FROM kas_3_postmeta WHERE post_id = $post_id", OBJECT );
//pre($post_meta_infos); die;
//Switching Blogs
$all_blogs = wp_get_sites();
$original_blog_id = get_current_blog_id();
//Send posts to blogs
$send_to = get_field('send_to_hotels',$post_id);
//Setting data
$post = get_post( $post_id );
$args = array(
'comment_status' => $post->comment_status,
'ping_status' => $post->ping_status,
'post_author' => $new_post_author,
'post_content' => $post->post_content,
'post_excerpt' => $post->post_excerpt,
'post_name' => $post->post_name,
'post_parent' => $post->post_parent,
'post_password' => $post->post_password,
'post_status' => 'publish',
'post_title' => $post->post_title,
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
'menu_order' => $post->menu_order
);$thumb = "";
if(get_post_thumbnail_id($post_id)) {
$thumb_id = get_post_thumbnail_id($post_id);
$thumb = wp_get_attachment_url($thumb_id);
}
//pre($thumb);
//die;foreach($all_blogs as $blog) {
switch_to_blog($blog['blog_id']);
if(in_array($blog['blog_id'],$send_to)) {
global $wpdb;
$new_post_id = wp_insert_post( $args , true);
if(!empty($thumb)){
$wp_filetype = wp_check_filetype(basename($thumb), null );
$getImageFile = $thumb;
$attach_id = wp_insert_attachment( $args, $getImageFile, $new_post_id );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $getImageFile );
wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $new_post_id, $attach_id );}/*$field_key = "";
update_field($field_key, get_field('slideshow_header',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_headline',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_subtitle',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_pretext',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_maintext',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_only_listCheckbox',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_no_link',$post_id) ,$new_post_id);
update_field($field_key, get_field('news_events_type',$post_id) ,$new_post_id);
update_field($field_key, get_field('news_events_event_date',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_gallery',$post_id) ,$new_post_id);
update_field($field_key, get_field('content_downloads',$post_id) ,$new_post_id);pre(get_field('slideshow_header',$post_id) );
pre($blog['domain'] . ' - ' . $new_post_id);*/
/*
* duplicate all post meta just in two SQL queries
*/
if (count($post_meta_infos)!=0) {
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
foreach ($post_meta_infos as $meta_info) {
$meta_key = $meta_info->meta_key;
$meta_value = addslashes($meta_info->meta_value);
$sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'";
}
$sql_query.= implode(" UNION ALL ", $sql_query_sel);
$wpdb->query($sql_query);
}
pre($blog['blog_id'].' - '. $blog['domain'] . ' - ' . $new_post_id);}
}
switch_to_blog($original_blog_id);
die;} else {
//ERROR MSG NO HOTEL CHOSEN
pre("error_2"); die;
}
} else {
//ERROR MSG NO CATEGORY CHOSEN
//pre("error_1"); die;
}
return true;
}
add_action( 'save_post', 'push_posts_to_hotels', 10, 3 );
Задача ещё не решена.
Других решений пока нет …