2016-06-11 2 views
3


In mein Konto Seite, Ich mag wie unten einen ähnlichen Code verwenden, in einer bestimmten „Städten“ oder „Postleitzahlen“, das unter Code zu verkaufen, wird in einem verkaufen spezifische "states":Verkauf in nur einige Städten WooCommerce

/** 
* Sell only in Alger & Zeralda 
*/ 

    function wc_sell_only_states($states) { 
     $states['DZ'] = array(
      'ALG' => __('Alger', 'woocommerce'), 
      'ZLD' => __('Zeralda', 'woocommerce'), 
     ); 
     return $states; 
    } 
    add_filter('woocommerce_states', 'wc_sell_only_states'); 

Was soll ich verwenden oder ändern?

Ich versuchte dies, aber es zeigt "Fehlercode 500":

// define the woocommerce_countries_base_city callback 
function filter_woocommerce_countries_base_city($var) { 
    // make filter magic happen here... 
    $var['DZ'] = array(
     'ALG' => __('Alger', 'woocommerce'), 
     'ZLD' => __('Zeralda', 'woocommerce'), 
    ); 
    return $var; 
}; 

// add the filter 
add_filter('woocommerce_countries_base_city', 'filter_woocommerce_countries_base_city', 10, 1); 

Sie in fortgeschrittenen Dank!

+0

Die Leute, die meine Frage unklar oder nützlich fanden, bitte sagen Sie mir, was ist daran falsch ?! –

+0

Dies ist kein Standard-Wocommerce-Hook, sondern Teil eines Plugins für Chilenischer Peso? Hier ist eine Liste der Standard-WooCommerce-Hooks -> https://docs.woothemes.com/wc-apidocs/hook-docs.html –

+0

Ich fand es hier https://gist.github.com/woogist/b81742981ca6297b03e6 und es hat für mich gearbeitet, jetzt muss ich auch noch einige städte angeben –

Antwort

0

Versuchen Sie, es hat für mich funktioniert !!

  add_filter('woocommerce_form_field_args', 'custom_form_field_args', 10, 3); 
      function custom_form_field_args($args, $key, $value) { 
       if ($args['id'] == 'billing_city') { 
       $args = array(
         'label' => __('Town/City', 'woocommerce'), 
         'required' => TRUE, 
         'clear' => TRUE, 
         'type' => 'select', 
         'options' => array(
          '' => ('Select City'), 
        'Bangalore' => ('Bangalore'), 
        'Mysore' => ('Mysore') 
        ), 
         'class' => array('update_totals_on_change') 
        ); 
       } // elseif … and go on 

       return $args; 
      }; 
+0

Vielleicht könnten Sie eine Erklärung dafür geben, was der Code macht und wie er das Problem löst? – antfx

0

Es gibt eine einfachere Lösung dafür. Der Ansatz hängt auch von den folgenden Annahmen ab:

Annahme: Wenn es nur eine Stadt gibt, auf die das Feld Stadt festgelegt werden soll, können Sie jQuery verwenden. Mit jQuery legen Sie den Wert des Feldes fest und machen die Felder deaktiviert, um eine Änderung des Feldwerts Stadt zu vermeiden.

wird ein grobes Beispiel sein:

jQuery('#billing_city').val('USA').attr('disabled','disabled'); 

Sie müssen nur diese Zeile hinzufügen, so dass es auf Checkout-Seite ausgeführt werden soll.