# Χρήσιμα filters

### Βάρος

Στο παρακάτω παράδειγμα ορίζουμε μέγιστο βάρος τα 2 κιλά εάν είναι πάνω απο 2, διαφορετικά θα πάρει το βάρος που έχει αυτόματα υπολογιστεί από τα προϊόντα

```
function myweight($weight){
if ($weight > 2){
$newweight = 2;
}else{
$newweight = $weight;
}
 
return $newweight;
}
 
add_filter( 'iben_speedex_filter_Voucher_Weight_order_metabox', 'myweight' );

```

### Βάρος από τις διαστάσεις (ογκοχρέωση )

Στο παρακάτω παράδειγμα ορίζουμε το βάρος υπολογίζοντας το ύψος \* πλάτος \* βάθος / 5000 του κάθε προϊόντος της παραγγελίας. Θα χρησιμοποιηθεί η μεγαλύτερη τιμή. Είτε η ογκοχρέωση είτε το συνολικό βάρος.

```
function iben_speedex_change_weight($weight, $order_id){
             
    $order = wc_get_order($order_id);
 
    if ( !is_a( $order, 'WC_Order' ) ){ return; } 
     
    $total_weight_dim = 0;
    $final_weight = 0;
 
    foreach( $order->get_items() as $item_id => $product_item ){
        $quantity = $product_item->get_quantity(); // get quantity
 
        $product = $product_item->get_product(); // get the WC_Product object
 
        if( $product ) {
 
            $height = ($product->get_height() >= 0 ? $product->get_height() : 0);
            $width = ($product->get_width() >= 0 ? $product->get_width() : 0);
            $length = ($product->get_length() >= 0 ? $product->get_length() : 0);
 
            $total_weight_dim += $quantity * (($height * $width * $length) / 5000);
        }
 
    }
     
    //&& $weight != 0
    if ($total_weight_dim > $weight){
         
        $final_weight = $total_weight_dim;
    }else{
        $final_weight = $weight;
    }
 
    return $final_weight;
     
}
 
 
add_filter('iben_speedex_filter_Voucher_Weight_order_metabox', 'iben_speedex_change_weight', 10, 2);


```

### Τηλέφωνο 2 ή κινητό σε custom πεδίο

Εαν έχετε custom πεδίο στο checkout, πχ Κινητό και meta name είναι \_billing\_mobile κανένα πρόβλημα.

Σε άλλη περίπτωση εαν το custom πεδίο σας έχει διαφορετικό meta name τότε θα πρέπει να τρέξετε το παρακάτω κώδικα στο αρχείο chilld  functions.php και απλά αλλάξτε το όνομα **\_billing\_mobile** με το δικό σας meta όνομα.

Η κάτω παύλα ( \_ ) είναι απαραίτητη.

```
function mycustomphonefield(){
 
return '_billing_mobile';
}
 
add_filter( 'iben_speedex_filter_phone2_metafield_order_metabox', 'mycustomphonefield' );


```

### Άλλα filters

iben\_speedex\_filter\_Comments\_2853\_1\_order\_metabox

iben\_speedex\_filter\_multi\_create\_comments\_metafield\_order

Για τα σχόλια / παρατηρήσεις του voucher

iben\_speedex\_filter\_multi\_create\_cash\_metafield\_order

Για την αντικαταβολή του voucher

### Αναγνώριση 3rd party πληρωμή αντικαταβολής

Σε κάποιες περιπτώσεις που χρησιμοποιείται μέθοδο πληρωμής (αντικαταβολή) από κάποιο άλλο plugin ή custom. Σε αυτή την περίπτωση το plugin δεν γνωρίζει εαν είναι αντικαταβολή και να προστεθεί αυτόματα στο πεδίο.&#x20;

**alg\_custom\_gateway\_1 =** Είναι το ID  της μεθόδου πληρωμής

```
function iben_speedex_cash_delivery_add_alg_custom1(){
 
return $payments = array('cod','alg_custom_gateway_1');
 
}
 
add_filter('iben_speedex_filter_cashdelivery_payments_order_metabox', 'iben_speedex_cash_delivery_add_alg_custom1');

```

### Αύξηση αντικαταβολής κατά 3 ευρώ

Αύξηση+3 ευρώ στο ποσό της αντικαταβολής του voucher εαν ειναι πληρωμή με αντικαταβολή

```
function iben_speedex_change_cashdelivery($cash, $order_id){

	$order = wc_get_order($order_id);

	if ( !is_a( $order, 'WC_Order' ) ){ return; } 

	$payment = $order->get_payment_method();

	$payments = array('cod', 'id_codfee');
	
	if (in_array($payment, $payments, true)) {
		return $cash + 3;
	}else{
		return 0;
	}
}

add_filter('iben_speedex_filter_multi_create_cash_metafield_order', 'iben_speedex_change_cashdelivery', 10, 2);
add_filter('iben_speedex_filter_Pod_Amount_Cash_order_metabox', 'iben_speedex_change_cashdelivery', 10, 2);
				
```

### Προσθήκη order number στις παρατηρήσεις

```
function iben_speedex_add_order_number_comments($comment, $order_id){ 

    $order = wc_get_order($order_id); 
    if ( !is_a( $order, 'WC_Order' ) ){ return; } 
    
    //GET ORDER COMMENTS
    $comments = $order->get_customer_note(); 
    $order_number = $order->get_order_number(); 
    return 'Παραγγελία ID:'.$order_number.' '.$comments;
}
//ενεργοποίηση εκτύπωσης σχολίων στο voucher για την μαζική
add_filter( 'iben_speedex_filter_multi_create_enable_comments_metafield_order', '__return_true' ); 
//τα hook filters
add_filter('iben_speedex_filter_multi_create_comments_metafield_order', 'iben_speedex_display_products_in_comments', 10, 2 );
add_filter('iben_speedex_filter_Paratiriseis_2853_1_order_metabox', 'iben_speedex_add_order_number_comments', 10, 2);
```

### Προβολή προιόντων στα σχόλια

```
function iben_speedex_display_products_in_comments($comments, $order_id){
	
	$order = wc_get_order($order_id);

	if ( !is_a( $order, 'WC_Order' ) ){ return; } 

	$export = '';

	if ($order->get_items()){
		$count = count($order->get_items());
		$index = 0;
		foreach( $order->get_items() as $item_id => $product_item ){
			$index++;
			$product = $product_item->get_product();
			//$export .= $product->get_name().' x '.$product_item->get_quantity().($index == $count ? '': ', ');			
			$export .= $product->get_sku().' x '.$product_item->get_quantity().($index == $count ? '': ', ');
			
		}
	}

	// Εμφάνιση προιόντων μόνο
	return $export;
	
	// Εμφάνιση σχόλια πελάτη + προιόντα
	// return $comments.' '.$export;

}
//ενεργοποίηση εκτύπωσης σχολίων στο voucher για την μαζική
add_filter( 'iben_speedex_filter_multi_create_enable_comments_metafield_order', '__return_true' ); 

add_filter('iben_speedex_filter_Paratiriseis_2853_1_order_metabox', 'iben_speedex_display_products_in_comments', 10, 2 );
add_filter('iben_speedex_filter_multi_create_comments_metafield_order', 'iben_speedex_display_products_in_comments', 10, 2 );
```

### Εμφάνιση σύνολο αντικαταβολών στην λίστα των vouchers

<figure><img src="/files/9keCCNvriNz8Vqp4dluA" alt=""><figcaption></figcaption></figure>

```
add_filter( 'iben_speedex_filter_listvouchers_displaycod_all', '__return_true' );
add_filter( 'iben_speedex_filter_listvouchers_displaycod_delivered', '__return_true' );
add_filter( 'iben_speedex_filter_listvouchers_displaycod_undelivered', '__return_true' );
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://speedexdoc.iben.pro/filters/xrisima-filters.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
