Php Wordpress Woocommerce自定义下拉列表问题
我试图在一个可变产品上添加一个动态下拉选择列表,但是foreach循环不起作用。选择框出现,但为空。打印阵列将显示正确的信息。我好像错过了一个州政府的问题 所需功能:每个用户都有一个唯一的字符列表,他们需要能够在此可变产品页面上选择这些字符。(具有多个选项的单一产品。) 这段代码在主题模板页面上非常有效。(childtheme)/testpage.php 它在自定义模板文件上不起作用。位置:(childtheme)/woocommerce/variable/single product/add to cart/variable.php 代码如下:Php Wordpress Woocommerce自定义下拉列表问题,php,drop-down-menu,woocommerce,wordpress,Php,Drop Down Menu,Woocommerce,Wordpress,我试图在一个可变产品上添加一个动态下拉选择列表,但是foreach循环不起作用。选择框出现,但为空。打印阵列将显示正确的信息。我好像错过了一个州政府的问题 所需功能:每个用户都有一个唯一的字符列表,他们需要能够在此可变产品页面上选择这些字符。(具有多个选项的单一产品。) 这段代码在主题模板页面上非常有效。(childtheme)/testpage.php 它在自定义模板文件上不起作用。位置:(childtheme)/woocommerce/variable/single product/add
<?php
$clickedChar = $_GET['cc'];
$myChars = fyxt_myCharList ($fyxtAccountID);
?>
<html>
<select name="char_list" required>
<option value="">Select...</option>
</html>
<?php
foreach($myChars as $clist){
echo '<option value="'.$clist->idfyxt_character.'"'.(($clickedChar == $clist->idfyxt_character) ? ' selected="selected">' : '>' ).$clist->character_name.'</option>';
}
?>
<html>
</select>
</html>
特别是模板页面上通常不需要的。我怀疑这里也有类似的问题。或者至少是问题所在的线索
谢谢你的帮助和想法 我已经猜到了您的
fyxt\u myCharList()
函数的简化版本。使用woocommerce\u-before\u-add\u-to\u-cart\u按钮
hook,我们可以向变量产品的页面添加一些代码,而无需修改add-to-cart模板
还要注意在下拉列表中使用的奇妙的小功能
add_action( 'woocommerce_before_add_to_cart_button', 'so_34027544_custom_dropdown' );
function so_34027544_custom_dropdown(){
global $product;
if( is_product() && $product->is_type( 'variable' ) ){
$clickedChar = isset( $_GET['cc'] ) && in_array( $_GET['cc'], fyxt_myCharList() ) ? $_GET['cc'] : '';
$myChars = fyxt_myCharList();
?>
<select name="char_list" required>
<option value=""><?php _e( 'Select...', 'my-textdomain' );?></option>
<?php
foreach($myChars as $clist){
echo '<option value="'.$clist.'"'. selected( $clickedChar, $clist, false ) . '>' .$clist.'</option>';
}
?>
</select>
<?php
}
}
function fyxt_myCharList(){
return array( 'a', 'b', 'c', 'd', 'e' );
}
add_action('woocommerce_-before_-add_-to_-cart_按钮','so_34027544_-custom_下拉列表');
函数so_34027544_自定义_下拉列表(){
全球$产品;
如果(is_product()&&$product->is_type('variable')){
$clickedChar=isset($\u GET['cc'])和&in_数组($\u GET['cc'],fyxt\u myCharList())?$\u GET['cc']:'';
$myChars=fyxt_myCharList();
?>
1.我假设
元素不在您的实际代码中,因此格式错误?2.您能否共享fyxt\u myCharList()
以便重现问题?fyxt\u myCharList()拉了一个ID和名称的关联数组。它运行正常。不确定为什么它可以在主题模板页面上工作,但不能在woo模板页面上工作。但是下面的钩子很好地解决了这个问题。谢谢!这成功了,谢谢!稍微调整一下,现在似乎可以工作了。感谢为所选内容提供的提示。这是一个很好的解决方案litte函数。这有助于我获取变量产品页面上的项目。但是,它们没有添加到购物车中。购物车显示我在管理区域分配的两个静态变量,但没有显示输入到两个新字段中的动态信息。我已开始此问题以解决该问题。感谢帮助!
add_action( 'woocommerce_before_add_to_cart_button', 'so_34027544_custom_dropdown' );
function so_34027544_custom_dropdown(){
global $product;
if( is_product() && $product->is_type( 'variable' ) ){
$clickedChar = isset( $_GET['cc'] ) && in_array( $_GET['cc'], fyxt_myCharList() ) ? $_GET['cc'] : '';
$myChars = fyxt_myCharList();
?>
<select name="char_list" required>
<option value=""><?php _e( 'Select...', 'my-textdomain' );?></option>
<?php
foreach($myChars as $clist){
echo '<option value="'.$clist.'"'. selected( $clickedChar, $clist, false ) . '>' .$clist.'</option>';
}
?>
</select>
<?php
}
}
function fyxt_myCharList(){
return array( 'a', 'b', 'c', 'd', 'e' );
}