0
我已經添加一個自定義字段類型到woocommerce管理字段,並且已經工作100%。如何添加自定義woocommerce管理字段類型
但此代碼位於woocommerce插件中(woocommerce/includes/admin/class-wc-admin-settings.php)。
我現在的問題是如何從woocoommerce插件中將我的自定義woocommerce管理字段類型排除或掛鉤或過濾到我的插件。因此,在更新woocommerce時,我的自定義字段類型仍然存在並可以正常工作。
這是階級-WC-管理-settings.php中已經定製
<?php
...
class WC_Admin_Settings {
...
public static function output_fields($options) {
...
switch ($value['type']) {
case 'productcategory' :
$option_value = (array) self::get_option($value['id']);
?><tr valign="top">
<th scope="row" class="titledesc">
<label for="<?php echo esc_attr($value['id']); ?>"><?php echo esc_html($value['title']); ?></label>
<?php echo $tooltip_html; ?>
</th>
<td class="forminp forminp-<?php echo sanitize_title($value['type']) ?>">
<fieldset>
<ul class="" style="margin:0; padding:0;">
<?php
$args = array(
'orderby' => 'name',
'hide_empty'=> 0,
'taxonomy' => 'product_cat'
);
$all_categories = get_categories($args);
$index = 0;
$count = count($all_categories);
$numItemsPerRow = ceil($count/2);
$numItemsOffsetFix = $count % 2 == 1;
echo '<div class="columns" style="width:auto; display:inline-block; height:auto; float:left; padding:0; margin:0 25px 0 0;">';
foreach ($all_categories as $key => $val) {
if ($index > 0 and $index % $numItemsPerRow == 0) {
echo '</div><div class="columns">';
if ($numItemsOffsetFix) {
$numItemsPerRow--;
$numItemsOffsetFix = false;
}
}
//foreach ($value['options'] as $key => $val) {
?>
<li style="">
<label><input type="checkbox"
name="<?php echo esc_attr($value['id']); ?>[]"
id="<?php echo esc_attr($val->term_id)?>"
value="<?php echo esc_attr($val->term_id)?>"
<?php
if (in_array($val->term_id,$option_value)) {
echo ' checked="checked"';
}
?>
/> <?php echo $val->name; ?>
</label>
</li>
<?php
$index++;
}
?>
</ul>
</fieldset>
<fieldset>
<?php echo $description; ?>
</fieldset>
</td>
</tr><?php
break;
...
} //end switch
...
} //end output_fields function
public static function save_fields($options) {
...
switch ($option['type']) {
...
case 'productcategory':
$value = array_filter(array_map('wc_clean', (array) $raw_value));
break;
...
}
...
} //end save_fields function
...
} //end class
?>
謝謝提醒。
哇..這個工作1000%.. 但是,我不知道爲什麼我的代碼不工作,我因爲我不使用woocommerce管理設置類來使用option_value變量。像你的代碼,在這一行: $ option_value =(array)WC_Admin_Settings :: get_option($ value ['id']); 順便說一句,謝謝我的維京人,你救了我的一天 –
太棒了!我沒有測試它,所以這是一個有教養的猜測。我不確定你所指的是你的哪個代碼?有沒有工作? – helgatheviking
我想我的代碼不工作bcause我的頭這麼累..在堆棧:) 無論如何,感謝海爾格 –