Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress Woocommerce自定义下拉列表问题_Php_Drop Down Menu_Woocommerce_Wordpress - Fatal编程技术网

Php Wordpress Woocommerce自定义下拉列表问题

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

我试图在一个可变产品上添加一个动态下拉选择列表,但是foreach循环不起作用。选择框出现,但为空。打印阵列将显示正确的信息。我好像错过了一个州政府的问题

所需功能:每个用户都有一个唯一的字符列表,他们需要能够在此可变产品页面上选择这些字符。(具有多个选项的单一产品。)

这段代码在主题模板页面上非常有效。(childtheme)/testpage.php

它在自定义模板文件上不起作用。位置:(childtheme)/woocommerce/variable/single product/add to cart/variable.php

代码如下:

<?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' );
}