Comment puis-je modifier le texte du bouton de “Choisir une option” dans le Thème?
Comment pourrais-je aller sur la modification de ce code PHP pour changer de Choisir une option en fonction de l'id de l'élément select dans le Thème plugin pour WordPress? Je crois avoir trouvé le bon fichier PHP dans wc-template-function.php mais mon manque de compétences en PHP qui me retient. Voici ce que j'ai à ce jour:
if ( ! function_exists( 'wc_dropdown_variation_attribute_options' ) ) {
/**
* Output a list of variation attributes for use in the cart forms.
*
* @param array $args
* @since 2.4.0
*/
function wc_dropdown_variation_attribute_options( $args = array() ) {
$args = wp_parse_args( $args, array(
'options' => false,
'attribute' => false,
'product' => false,
'selected' => false,
'name' => '',
'id' => '',
'class' => '',
'show_option_none' => __( 'Choose an option', 'woocommerce' ),
'show_option_color' => __( 'Choose a color', 'woocommerce' ),
'show_option_size' => __( 'Choose a size', 'woocommerce' )
) );
$options = $args['options'];
$product = $args['product'];
$attribute = $args['attribute'];
$name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
$id = $args['id'] ? $args['id'] : sanitize_title( $attribute );
$class = $args['class'];
if ( empty( $options ) && ! empty( $product ) && ! empty( $attribute ) ) {
$attributes = $product->get_variation_attributes();
$options = $attributes[ $attribute ];
}
echo '<select id="' . esc_attr( $id ) . '" class="' . esc_attr( $class ) . '" name="' . esc_attr( $name ) . '" data-attribute_name="attribute_' . esc_attr( sanitize_title( $attribute ) ) . '">';
if ( $args['show_option_none'] ) {
echo '<option value="">' . esc_html( $args['show_option_none'] ) . '</option>';
}
if ( $args['$id_colors'] ) {
echo '<option value="">' . esc_html( $args['show_option_color'] ) . '</option>';
}
if ( $args['$id_sizes'] ) {
echo '<option value="">' . esc_html( $args['show_option_size'] ) . '</option>';
}
if ( ! empty( $options ) ) {
if ( $product && taxonomy_exists( $attribute ) ) {
//Get terms if this is a taxonomy - ordered. We need the names too.
$terms = wc_get_product_terms( $product->id, $attribute, array( 'fields' => 'all' ) );
foreach ( $terms as $term ) {
if ( in_array( $term->slug, $options ) ) {
echo '<option value="' . esc_attr( $term->slug ) . '" ' . selected( sanitize_title( $args['selected'] ), $term->slug, false ) . '>' . apply_filters( 'woocommerce_variation_option_name', $term->name ) . '</option>';
}
}
} else {
foreach ( $options as $option ) {
//This handles < 2.4.0 bw compatibility where text attributes were not sanitized.
$selected = sanitize_title( $args['selected'] ) === $args['selected'] ? selected( $args['selected'], sanitize_title( $option ), false ) : selected( $args['selected'], $option, false );
echo '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) ) . '</option>';
}
}
}
echo '</select>';
}
}
Vous pouvez voir où j'ai essayé d'ajouter show_option_color et show_option_size dans le tableau pour les ajouter, en cas de déclarations pour eux, mais il ne semble pas fonctionner. Je ne suis pas sûr de la façon de référence à l'id de l'élément select et écrire l'instruction if en fonction de si son est correct sélectionner l'élément.
Voici le code HTML que je suis en train de cible.
<select id="sizes" class="" name="attribute_sizes" data-attribute_name="attribute_sizes">Want this to say Choose a size</select>
<select id="colors" class="" name="attribute_sizes" data-attribute_name="attribute_sizes">Want this to say Choose a color</select>
variable.php les lignes de code 27 - 38:
<?php foreach ( $attributes as $attribute_name => $options ) : ?>
<tr>
<td class="label"><label for="<?php echo sanitize_title( $attribute_name ); ?>"><?php echo wc_attribute_label( $attribute_name ); ?></label></td>
<td class="value">
<?php
$selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $product->get_variation_default_attribute( $attribute_name );
wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
echo end( $attribute_keys ) === $attribute_name ? '<a class="reset_variations" href="#">' . __( 'Clear selection', 'woocommerce' ) . '</a>' : '';
?>
</td>
</tr>
<?php endforeach;?>
Assurez-vous. Chaque produit a aucune option pour sélectionner à partir de, sélectionnez une option de taille, sélectionnez une option de couleur, ou les deux options. Cependant, au lieu de dire sélectionnez une taille ou sélectionnez une couleur, ils ont tous simplement dire "Choisissez une option". Je veux juste que chacun-à-dire de choisir une couleur ou Sélectionnez une taille en fonction de ce que vous êtes en fait la sélection. L'sélectionner une couleur, les boutons ont un id de #couleurs et sélectionnez une taille boutons ont un id de #tailles, mais le texte d'affichage pour les deux dit "Choisissez une option. Espérons que cela clarifie.
Oui, ça aide. Chercher une réponse sous peu!
OriginalL'auteur jfoutch | 2015-08-23
Vous devez vous connecter pour publier un commentaire.
C'est un parfait cas d'utilisation d'un filtre personnalisé! Je suis le premier à décrire une méthode qui n'est pas le moyen le plus rapide, mais il est probablement le plus propre et le plus facile à comprendre pour quelqu'un d'autre qui pourrait avoir pour lire votre code. Je décrirai également un 'sale' la voie que devrait faire le travail si vous êtes dans un manque de temps.
Rapide:
L'endroit pour trouver où c'est affiché dans le fichier:
Autour de la ligne 27, selon la version de votre Thème, vous verrez quelque chose comme ceci:
_ _ () La fonction est en cours d'exécution le premier paramètre par le biais de WordPress, système de traduction en utilisant le "thème" du texte de domaine. Il est préférable de préserver la possibilité pour la traduction, si nous voulons changer ce texte avant de nous l'envoyer par le biais de la fonction de traduction.
Cette ligne de code qui se passe au cours d'une boucle qui affiche la totalité de la variation du produit attributs. Cela nous permet de voir facilement l'attribut est sortie en regardant le $nom variable.
Nous aurons besoin de faire une fonction qui prend dans la variable $name et envoie une chaîne de caractères. Il ressemblerait à quelque chose comme ceci:
Maintenant, avant que le code de la ligne 27 de variable.php nous pouvons mettre quelque chose comme ceci:
Ensuite, il suffit de remplacer "Choisir une option" avec votre $select_text variable:
N'oubliez pas de faire tout cela dans un modèle de remplacer ou de votre personnalisation sera perdu sur la prochaine mise à jour!
http://docs.woothemes.com/document/template-structure/
Le Moyen Le Plus Propre:
Une meilleure et plus extensible façon de le faire est d'ajouter un filtre personnalisé afin de transmettre ce à travers. Il y a quelques étapes supplémentaires, mais permet d'ajouter facilement plus d'une logique personnalisée si vous souhaitez remplacer la fonctionnalité au cas par cas en fonction de votre produit.
Faire un premier filtre personnalisé avec un point de vue sémantique-nom significatif, et la mettre quelque part dans votre functions.php fichier pour le thème:
Puis, dans le variable.php fichier, au lieu de simplement appeler directement la fonction, faire passer à travers votre nouveau filtre:
La configuration des filtres personnalisés pour les choses de ce genre ne prendre un peu de temps, mais vous obtenez l'avantage de la facilité de maintenance, puisque vous pouvez empiler ou de désactiver les fonctions en bas de la route sans avoir besoin de modifier votre code existant.
Mise à jour pour WC 2.4
De la Version 2.4 de Thème introduit une autre façon d'obtenir les attributs et leurs associés sélectionne. Puisqu'ils n'ont pas fourni un filtre pour ce, je vous recommande de substitution de la wc_dropdown_variation_attribute_options de la fonction en utilisant les méthodes décrites ci-dessus. Donc, de copier et de coller l'intégralité de la fonction dans votre thème functions.php fichier de départ à la déclaration, et d'ajouter une variable pour le sélectionner du texte, si ce n'est pas une couleur ou taille:
Ahh, je vois qu'ils changé de ce fait beaucoup récemment. Il est toujours géré en variable.php, sauf que maintenant vous allez être à la recherche de la ligne 33. Je vais mettre à jour la réponse à refléter une nouvelle approche.
En fait, juste regardé votre pâte à nouveau - il y avait quelques problèmes de syntaxe. Vous avez eu un errant barre oblique en haut, et semble aussi que vous avez essayé d'appeler la fonction à l'intérieur de lui-même, avec les accolades ne correspond pas au droit. Essayez d'écraser ce que vous avez avec cela, et accorder une attention particulière à la syntaxe et les enceintes: pastebin.com/fvkbf7Lp
Je pense que je l'ai mise à jour le get_text_for_select_based_on_attribute() fonction: pastebin.com/JLpbZnSH
Excellent! Merci!!!! Vous devriez certainement garder un œil sur les changements à cette fonction dans l'avenir. Remplacement d'une fonction peuvent être sujettes à la mise à jour de la rupture, mais la Woo équipe n'a pas l'habitude de garder en changeant la même chose et à chaque version. Vous avez probablement une période de grâce d'au moins jusqu'à la prochaine version majeure, mais le mettre sur une liste de contrôle lors de futures mises à jour. Malheureusement, le système ne vais pas vous dire si il existe une fonction override mise à jour de la même façon qu'il va vous dire un modèle de remplacement.
OriginalL'auteur Josh LaBau
Il est en fait un moyen plus facile de le personnaliser.
Si vous prenez un coup d'oeil au cœur WC fichier wc-template-functions.php vous pouvez voir que le tableau à l'intérieur d'wc_dropdown_variation_attribute_options fonction est en fait c'est des arguments à la suite de paires clé-valeur:
Maintenant tout ce que vous devez faire est de modifier la même valeur de clé de la paire dans la fonction dans variable.php fichier de modèle. Donc, je voulais montrer l'étiquette de la liste déroulante au lieu de Choisir Une Option de texte, j'ai donc changer le fu
En va de même avec d'autres paires. Hoep cette aide. Par ailleurs, cela ne fonctionne que dans les WC 2.4+, alors soyez prudent.
OriginalL'auteur Hooman Askari
J'ai trouvé un moyen avec WC 2.5. Ajoutez à cela functions.php:
OriginalL'auteur Marc
Je l'ai fait à l'aide d'une combinaison d'autres réponses ici et il a bien fonctionné pour moi.
Cela a été fait à l'aide de WooCoommerce 3.3.5 et d'assumer le filtre a été ajouté récemment.
Vous utilisez le filtre pour le
wc_dropdown_variation_attribute_options()
fonction.Espère que cela aide quelqu'un.
OriginalL'auteur Joe
Voici une jolie solution simple pour WC >2.4 qui évite la réécriture complète de fonctions et d'encombrer votre functions.php..
Ajouter le variable.php fichier de votre thème (http://docs.woothemes.com/document/template-structure/), et le modifier (ligne 27):
:
Ce sera de remplacer "Choisir une option " Choisir la Taille", de "Choisissez la Couleur", etc. selon le nom de l'attribut.
Vous devez suivre le thème du modèle de la structure du répertoire de votre thème remplacer le dossier (http://docs.woothemes.com/document/template-structure/), donc le placer dans
YOUR_THEME_ROOT/woocommerce/single-product/add-to-cart/variable.php
Vous devez également supprimer les
<?php endforeach;?>
que vous avez sur la ligne 46. Le débordement de pile dans l'éditeur a décidé de couper le bloc de code. Fondamentalement, il suffit de remplacer l'original de boucle foreach ci-dessus.Oui, cela a fonctionné. Je vous remercie.
OriginalL'auteur tommm
Si vous cherchez à changer déroulante texte à partir de “Choisir une option” dans le Thème, ajoutez ce qui suit à functions.php fichier dans votre thème:
OriginalL'auteur Sigma Wadbude
Si vous vous demandez comment faire pour remplacer “Choisissez une option” avec les attributs correspondants/variation de nom, alors voici comment vous pouvez le faire.
modifier variable.php et de surveillance pour le code comme celui illustré ci-dessous
Ouvrir la variable.php(wp-content/plugins/woocommerce/includes/variable.php fichier de votre thème et le modifier (à partir de la ligne 41 à 43): (Supprimez ce 3 ligne de code)
Puis ajoutez ce code
C'est en travaillant tous les WordPress version
Grâce
OriginalL'auteur Savan Dholu
Code mis à jour, pour ceux qui sont encore intéressés
OriginalL'auteur Jonny at Lumos Agency