Fügen Sie benutzerdefinierte css-Klasse für WooCommerce Kasse Felder
Ich würde gerne in der Lage, fügen Sie eine benutzerdefinierte CSS-Klasse für meinen WooCommerce Kasse Felder. Ich bin mit twitter Bootstrap und ich möchte in der Lage sein zu verwenden Ihre .Formular-Steuerelement-class.
Blickte ich in die woocommerce templates-Ordner in form-billing.php
aber ich bin mir nicht sicher, wo, um die .form-control
Klasse an den einzelnen Textfeldern.
Hier ist der code für form-billing.php
<?php
/**
* Checkout billing information form
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.1.2
*/
if ( ! defined( 'ABSPATH' ) ) exit; //Exit if accessed directly
?>
<div class="woocommerce-billing-fields">
<?php if ( WC()->cart->ship_to_billing_address_only() && WC()->cart->needs_shipping() ) : ?>
<h3><?php _e( 'Billing & Shipping', 'woocommerce' ); ?></h3>
<?php else : ?>
<h3><?php _e( 'Billing Details', 'woocommerce' ); ?></h3>
<?php endif; ?>
<?php do_action( 'woocommerce_before_checkout_billing_form', $checkout ); ?>
<?php foreach ( $checkout->checkout_fields['billing'] as $key => $field ) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
<?php do_action('woocommerce_after_checkout_billing_form', $checkout ); ?>
<?php if ( ! is_user_logged_in() && $checkout->enable_signup ) : ?>
<?php if ( $checkout->enable_guest_checkout ) : ?>
<p class="form-row form-row-wide create-account">
<input class="input-checkbox" id="createaccount" <?php checked( ( true === $checkout->get_value( 'createaccount' ) || ( true === apply_filters( 'woocommerce_create_account_default_checked', false ) ) ), true) ?> type="checkbox" name="createaccount" value="1" /> <label for="createaccount" class="checkbox"><?php _e( 'Create an account?', 'woocommerce' ); ?></label>
</p>
<?php endif; ?>
<?php do_action( 'woocommerce_before_checkout_registration_form', $checkout ); ?>
<?php if ( ! empty( $checkout->checkout_fields['account'] ) ) : ?>
<div class="create-account">
<p><?php _e( 'Create an account by entering the information below. If you are a returning customer please login at the top of the page.', 'woocommerce' ); ?></p>
<?php foreach ( $checkout->checkout_fields['account'] as $key => $field ) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
<div class="clear"></div>
</div>
<?php endif; ?>
<?php do_action( 'woocommerce_after_checkout_registration_form', $checkout ); ?>
<?php endif; ?>
</div>
Muss ich suchen in einer anderen template-Datei?
Dank
InformationsquelleAutor NateW | 2014-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
icc97 die Antwort ist fast da, aber funktioniert nicht.
Nahm ich icc97 Antwort, und ausgetestet:
InformationsquelleAutor Dan Smart
Als @Erdnüsse darauf hingewiesen, was, wenn wir wollen hinzufügen von CSS-Klassen an bestimmte input-Typen nur?
Nach dem Experimentieren mit den Lösungen, die hier gepostet so weit, (Dank an alle!), Ich habe kam mit einem mod mit einem einfachen "switch case", in der die Logik stammt aus
/woocommerce/includes/wc-template-functions.php
. Die Funktion, die es uns ermöglichen, Ziel-alle-input-Typen auf einmal, werden Sie den Standard-input-Typen oder sogar benutzerdefinierte diejenigen.Es gibt keine Notwendigkeit, zu schreiben, die
woocommerce_form_field
Funktion ändern Sie einfach die$defaults
args für die input-Typen. Es gilt zu erwähnen, dass die Funktion auch erlauben, uns zu fügen Sie viel mehr als nur die css-Klassen auf die Felder.-- So, hier ist die Funktion --
Die obige Funktion vollständig gelöst ist das Problem der Ausrichtung des checkout-Formulars Eingänge alle auf einmal, das ist wirklich straight forward für checkout-Formular Standard-input-Typen oder sogar eigene neue. Es scheint nicht möglich zu sein, obwohl, drucken jeden input type html-Ausgabe ohne die Schaffung einer neuen Funktion als @abhisek zeigt auf seine Antwort.
Bonus
Scheint es, dass die Funktion möglicherweise auch einen Einfluss auf andere Formen von Feldern gedruckt von WooCommerce Funktionen oder templates außerhalb der checkout-Seite.
Ich habe es geschafft, bedingt die Funktion anwenden, nur, wenn auf der checkout-Seite mit Hilfe der
is_page()
Funktion. Ihre checkout-Seite kann einen anderen slug, so verändern, dass zu reflektieren, Sie entsprechend.Wenn Sie müssen, um die Funktion nur für den checkout-Seite gehen Sie wie folgt vor:
Kommentar add_filter()
//add_filter('woocommerce_form_field_args','wc_form_field_args', 10, 3);
Und verwenden add_action statt
add_action('woocommerce_form_field_args', 'wc_form_field_args', 10, 3);
Nach, dass die Funktion nur auf der checkout-Seite form.
Ich konnte nicht replizieren. Was anderes macht die Funktion beeinträchtigen? Um ein Ziel nur die Felder, die Sie möchten, entfernen Sie einfach den Fällen, die Sie nicht wollen, aus der
switch()
Funktion.Nach der Besichtigung es weiter, ja, es scheint, dass auch andere woocommerce - Formen betroffen sind, die von der Funktion. Ich habe gerade überprüft die checkout-Seite mit der
is_page()
- Funktion, um den filter zu entfernen ist, falls es nicht auf der checkout-Seite. Ich habe das update-Funktion.Wenn die add_filter wird kommentiert, was Hinzugefügt und entfernt in der Handlung? Jedoch, Sie gab mir einen Tipp und im filter habe ich die wenn (is_checkout ()), und jetzt funktioniert es. Vielen Dank 🙂
Bitte überprüfen Sie die "Bonus" - Teil der Antwort für die Erklärung. Die
add_action()
nur löst die Funktion, die wiederum hat eine bedingte überprüfen, wenn Sie auf der checkout-Seite und fügt dann hinzu oder entfernt den filter entsprechend einstellen. Ich habe es getestet bei mir und es funktioniert. Sie dann ändern müssen, um die Funktion wieder zu target nur die Feld-Typen, die Sie wollen. Sollte es nicht versauen mit anderen Formen Felder gedruckt von woocommerce Funktionen oder templates außerhalb der checkout-Seite.InformationsquelleAutor Adriano Monecchi
@Chetan s link und ausführen Antwort nicht freundlich von Ihnen, was Sie wollen, aber wie immer sind Sie nie sehr gute Antworten.
Die beste Ressource für diese ist die WooCommerce Codex-Seite auf Customizing-checkout-Felder, die über Aktionen und Filter.
In der 'Customizing WooCommerce Checkout-Feld-Labels und Platzhalter-Text' in Chetan Seite haben Sie die folgenden code, die Sie brauchen, um hinzuzufügen, um Ihre functions.php ich habe es geändert in der Weise, dass Sie sollte das tun, was Sie wollen, aber habe ich noch nicht getestet der code:
woocommerce_form_field_args
filter, um zu übergeben den Namen der Klasse wie folgt:add_filter('woocommerce_form_field_args','wc_form_field_args',10,3); function wc_form_field_args($args, $key, $value) { $args['input_class'][] = 'form-control'; return $args; }
siehe Dan Smart Antwort - er debuggt meine Antwort
InformationsquelleAutor icc97