2-я функция не работает при активации плагина

Здравствуйте, я создаю плагин, когда я активирую плагин, он создает размер атрибута и цвета в этом первом коде, который я создаю

global $wpdb;
// attributes parameters
$wpm_attributes = array(
array('label' => 'Size',  'name' => 'size','type' => 'select',),
array('label' => 'Color', 'name' => 'color','type' => 'select',)
);
//create default attributes
foreach ( $wpm_attributes as $attr ) {
$attribute = array(
'attribute_label'   => $attr['label'],
'attribute_name'    => $attr['name'],
'attribute_type'    => $attr['type'],
'attribute_orderby' => 'menu_order'
);
if( !term_exists( $attribute ) ){
$wpdb->insert( $wpdb->prefix . 'woocommerce_attribute_taxonomies', $attribute );
delete_transient( 'wc_attribute_taxonomies' );
}
}

это работает на 100% нормально после того, как я создал термины, код

global $wpdb;
$size_terms = array(
array('label' => '2-XL',       'slug' =>  '2-xl'),
array('label' => '3-XL',       'slug' =>  '3-xl'),
array('label' => '4-XL',       'slug' =>  '4-xl'),
array('label' => '5-XL',       'slug' =>  '5-xl'),
array('label' => '6-XL',       'slug' =>  '6-xl'),
array('label' => 'L',          'slug' =>  'l'),
array('label' => 'M',          'slug' =>  'm'),
array('label' => 'S',          'slug' =>  's'),
array('label' => 'XL',         'slug' =>  'xl'),
array('label' => 'XS',         'slug' =>  'xs'),
array('label' => 'XXL',        'slug' =>  'xxl'),
array('label' => 'Custom Size','slug' =>  'custom-size')
);
// //insert default trems
foreach ( $size_terms as $term ) {
//if( !term_exists( $term['label'], 'pa_size' ) ){
wp_insert_term( $term['label'], 'pa_size', array( 'slug' => $term['slug'] ) );
//}
}

но при первой активации плагин, просто добавляющий размер атрибута, а также цвет и функцию термина, не работает после этого, когда я снова активирую плагин, во 2-й раз добавляются условия, почему он больше не работает при 1-й активации?

1

Решение

Когда вы пытаетесь добавить данные при активации плагина, всегда используйте эту функцию register_activation_hook () в вашем основном файле плагина.

Теперь попробуйте это в вашем коде

<?php
/*
Plugin Name: Your Plugin Name
Plugin URI: http://Plugin URI
Description: Plugin Description
Author: You
Version: 1.0
Author URI: http://
*/

function function_name(){
global $wpdb;
// attributes parameters
$wpm_attributes = array(
array('label' => 'Size',  'name' => 'size','type' => 'select',),
array('label' => 'Color', 'name' => 'color','type' => 'select',)
);
//create default attributes
foreach ( $wpm_attributes as $attr ) {
$attribute = array(
'attribute_label'   => $attr['label'],
'attribute_name'    => $attr['name'],
'attribute_type'    => $attr['type'],
'attribute_orderby' => 'menu_order'
);
if( !term_exists( $attribute ) ){
$wpdb->insert( $wpdb->prefix . 'woocommerce_attribute_taxonomies', $attribute );
delete_transient( 'wc_attribute_taxonomies' );
}
}

// Your Second Data Entry
$size_terms = array(
array('label' => '2-XL',       'slug' =>  '2-xl'),
array('label' => '3-XL',       'slug' =>  '3-xl'),
array('label' => '4-XL',       'slug' =>  '4-xl'),
array('label' => '5-XL',       'slug' =>  '5-xl'),
array('label' => '6-XL',       'slug' =>  '6-xl'),
array('label' => 'L',          'slug' =>  'l'),
array('label' => 'M',          'slug' =>  'm'),
array('label' => 'S',          'slug' =>  's'),
array('label' => 'XL',         'slug' =>  'xl'),
array('label' => 'XS',         'slug' =>  'xs'),
array('label' => 'XXL',        'slug' =>  'xxl'),
array('label' => 'Custom Size','slug' =>  'custom-size')
);
// //insert default trems
foreach ( $size_terms as $term ) {
//if( !term_exists( $term['label'], 'pa_size' ) ){
wp_insert_term( $term['label'], 'pa_size', array( 'slug' => $term['slug'] ) );
//}
}
}
register_activation_hook(__FILE__, 'function_name');
?>

Замечания: Лучше всего писать этот код в начале файла, но не обязательно.

Надеюсь, что это поможет вам

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]