2016-06-20 10 views
0

У меня есть api с другого сайта wocommerce и взять некоторую информацию с моим продуктом sku как я могу добавить эту информацию, чтобы опубликовать meta после создания нового продукта? Я хочу, когда я создаю продукт, информация возьмет с api и sku продукта и сохранит для публикации мета.WordPress: как добавить новое сообщение meta перед сохранением продукта woocommerce

я нашел этот крюк, но я думаю, что это не работает

<?PHP 
function my_product_att($sku) { 
    // my api codes and take information and use  
    add_post_meta('product_id','key','value'); 
    // i haven't problem here i just need Appropriate hook 
} 
add_action('save_post', 'my_product_att'); // this hook not work for woocommerce 

ответ

1

WooCommerce Продукты WORDPRESS сообщения. Вы можете использовать словарные перехваты как save_post & $post_id как аргумент. Вы проходите $sku, что неверно.

add_action('save_post', 'wpse_110037_new_posts'); 
function wpse_110037_new_posts($post_id){ 
    $post_type = get_post_type($post_id); 
    if($post_type == 'products') { 
     add_post_meta($post_id,'key','value'); 
    } 
} 
+0

Этот код работает только на продукте woocommerce или на всех сообщениях Wordpress?! –

+0

По умолчанию он будет работать для всех типов сообщений, но вы можете найти тип сообщения внутри функции и поставить условие, чтобы добавить сообщение мета, если тип сообщения - это только продукт. – Milap

+0

THX so much bro –

0

Просьба под кодом. Обратите внимание, что в коде $ unique есть true или false на основе того, должно ли значение meta быть уникальным или нет.

add_action('transition_post_status', 'product_created_function', 10, 3); 
function product_created_function($newstatus, $oldstatus, $post) { 
    if($oldstatus != 'publish' && $newstatus == 'publish' && !empty($post->ID) && in_array($post->post_type, array('product'))) { 
     add_post_meta($post->ID, $key, $value,$unique); 
    }  
} 
+0

этот код работает только на продукте woocommerce или на всех сообщениях Wordpress?! –

+1

Этот короткий код также работает для сообщения. но для этого вам нужно немного изменить код 'in_array ($ post-> post_type, array ('post'))' или любой тип сообщения. – vidhi

0
add_action('save_post', 'prowp_save_meta_boxdddd'); 
function prowp_save_meta_boxdddd($post_id) { 
global $wpdb; 
$table_prefix = $wpdb->prefix; 
$tablename = $table_prefix.'postmeta'; 

$ wpdb-> запрос ($ wpdb-> подготовить ('UPDATE' $ имя_таблицы 'SET meta_value = "тест" WHERE post_id =' $ post_id)...); }