2016-11-24 73 views
0

在那里我想在我的订单woocommerce中添加自定义元框。我已经建立,但在那里我有问题,每当我试图在这里保存它并没有改变我的代码:如何保存添加元框woocommerce wordpress

add_action('add_meta_boxes', 'add_meta_boxes'); 

function add_meta_boxes() 
{ 
    add_meta_box( 
     'woocommerce-order-my-custom', 
     __('Order Driver'), 
     'order_my_custom', 
     'shop_order', 
     'side', 
     'default' 
    ); 
} 
function order_my_custom() 
{ 
    $servername = "localhost"; 
    $username = "root"; 
    $password = "no_password"; 
    $dbname = "testtable"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "SELECT * FROM wp_posts WHERE post_type='drivers'"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 

    echo "<select style='width:100%;' >"; 
    echo "<option> --- Select ---</option>"; 
    while($row = $result->fetch_assoc()) { 
    echo "<option value=".$row['ID'].">".$row['post_title']."</option>"; 
    } 
    echo "</select>"; 
    } else { 
    echo "0 results"; 
} 
$conn->close(); 

} 

我应该怎么做呢?有人给我的解决方案,所以我的代码可以像我想要的那样工作?

当我使用:

echo "<option".($selected=='')?'':'selected'." value=".$row['ID'].">".$row['post_title']."</option>"; 

error

如果我只用:

echo "<option value=".$row['ID'].">".$row['post_title']."</option>"; 

should

现在

enter image description here

回答

1

您错过了选择驱动程序后保存顺序的选择驱动程序的id的代码,以保存顺序。

我没有测试过代码,但希望它有帮助。

add_action('add_meta_boxes', 'add_meta_boxes'); 

function add_meta_boxes() 
{ 
    add_meta_box( 
     'woocommerce-order-my-custom', 
     __('Order Driver'), 
     'order_my_custom', 
     'shop_order', 
     'side', 
     'default' 
    ); 
} 
function order_my_custom() 
{ 
    global $woocommerce, $post; 
    $order_id =$post->ID; 
    $servername = "localhost"; 
    $username = "root"; 
    $password = "no_password"; 
    $dbname = "testtable"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "SELECT * FROM wp_posts WHERE post_type='drivers'"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
    ob_start();?> 
    <select name='order_driver' style='width:100%;' > 
    <option value=""> --- Select ---</option> 
    <?php 
    while($row = $result->fetch_assoc()) { 
     $order_driver = get_post_meta($order_id,'order_driver',true); 
    ?> 
    <option <?php echo ($row['ID']==$order_driver)?'selected':''?> value="<?php echo $row['ID']?>"><?php echo $row['post_title']?></option> 

    <?php } ?> 
    </select> 
    <?php } else {?> 
    <option value="">0 Results</option> 
    <?php } 
    echo ob_get_clean(); 
$conn->close(); 

} 

function save_drivers_meta($post_id, $post, $update) { 

    $post_type = get_post_type($post_id); 

    /* 
    * Make sure we are updating post meta only for shop orders 
    */ 
    if ("shop_order" != $post_type) return; 

    // - Update the post's order_driver value if it's set. 

    if (isset($_POST['order_driver'])) { 
     update_post_meta($post_id, 'order_driver', sanitize_text_field($_POST['order_driver'])); 
    } 
} 
add_action('save_post', 'save_drivers_meta', 10, 3); 
+0

oke,那是帮助我。但在那里它给我一个litle麻烦,当我使用: 'echo“”。$ row ['post_title']。“”;' 当我使用该代码时,我的选择要显示任何数据。 有你的解决方案吗? –

+0

对不起,我无法理解:(你可以在while循环中使用var_dump($ row)并显示$ row中的内容) 和显示元框的订单页面的屏幕截图 – Yamu

+0

看看现在是否适用 – Yamu

相关问题