2015-12-26 97 views
2

我有一个关于woocommerce和wordpress本身的问题。可能我的问题是虚拟的,但目前的代码不起作用。将wordpress post_meta显示到其他表中

我想要实现的是在woocommerce订单子页面中显示我的自定义字段数据。我的自定义字段post_meta有名称(metakey):wccpf_authorvalue

在谷歌我已经找到了一些代码,只需要改变我的帖子元名字变成这样:

add_filter('manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION'); 
function MY_COLUMNS_FUNCTION($columns){ 
    $new_columns = (is_array($columns)) ? $columns : array(); 
    unset($new_columns['order_actions']); 

    //edit this for you column(s) 
    //all of your columns will be added before the actions column 
    $new_columns['for-author-value'] = 'Dla autora'; 
    //stop editing 

    $new_columns['order_actions'] = $columns['order_actions']; 
    return $new_columns; 
} 


add_action('manage_shop_order_posts_custom_column', 'MY_COLUMNS_VALUES_FUNCTION', 2); 
function MY_COLUMNS_VALUES_FUNCTION($column){ 
    global $post; 
    $data = get_post_meta($post->ID); 

    //start editing, I was saving my fields for the orders as custom post meta 
    //if you did the same, follow this code 
    if ($column == 'for-author-value') {  
     echo (isset($data['wccpf_authorvalue']) ? $data['wccpf_authorvalue'] : ''); 
    } 

} 


add_filter("manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION'); 
function MY_COLUMNS_SORT_FUNCTION($columns) { 
    $custom = array(
     //start editing 

     'for-author-value' => 'wccpf_authorvalue' 

     //stop editing 
    ); 
    return wp_parse_args($custom, $columns); 
} 

的问题 - 列显示,但没有任何价值。这是为什么?

我用这里的解决方案:Stackoverflow.com但它不工作。

+0

你给出的代码对我来说工作正常。你有没有检查'wccpf_authorvalue'是否被保存在数据库中或者是否有与该**键**的元? –

+0

@Rohil_PHPBeginner - 在DB> _postmeta表中我有我的记录与元值如({“type”:“text”,“label”:“PLN dla autora”,“name”:“pl ..)。也是表woocommerce_order_itemmeta其中 - >每个订单都有专门的记录到我的输入(元值是我需要的数据)但我不知道如何显示它,特别是如果每​​个订单都有自己的专用线 –

+1

替换'$ data = get_post_meta($ post-> ID);''用'$ data = get_post_meta($ post-> ID,'wccpf_authorvalue',true);''和'echo $ data;'。您能否给我结果替换之后? –

回答

-1

其实我已经想出了如何解决我的问题。感谢您对此事的支持。如果将来有人需要帮助,我在下面分享我的代码(重要的是,我决定添加2列)

add_filter('manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION', 10); 
function MY_COLUMNS_FUNCTION($columns) { 
    $new_columns = (is_array($columns)) ? $columns : array(); 
    unset($new_columns['order_actions']); 
    //edit this for you column(s) 
    //all of your columns will be added before the actions column 
    $new_columns['product_name'] = 'Product'; 
    $new_columns['authors_income'] = 'Author'; 

    $new_columns['order_actions'] = $columns['order_actions']; 

    return $new_columns; 
} 

add_action('manage_shop_order_posts_custom_column', 'MY_COLUMNS_VALUES_FUNCTION', 2); 
function MY_COLUMNS_VALUES_FUNCTION($column) { 
    global $post; 
    $order = new WC_Order($post->ID); 
    $items = $order->get_items(); 

    //start editing, I was saving my fields for the orders as custom post meta 
    //if you did the same, follow this code 
    if ($column == 'authors_income') { 
     foreach ($items as $item) { 

      echo $item['your field meta key']; 
      echo '.00USD'; 

     } 
    } 

    if ($column == 'product_name') { 
     foreach ($items as $item) { 

      echo $item['your field meta key']; 

     } 
    } 

} 


add_filter("manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION'); 
function MY_COLUMNS_SORT_FUNCTION($columns) { 
    $custom = array(
     //start editing 

     'authors_income' => 'your field meta key', 
     'product_name' => 'your field meta key' 

     //stop editing 
    ); 
    return wp_parse_args($custom, $columns); 
} 
2

为过滤器添加优先级,以便它可以按照您的要求工作。还要将此代码添加到functions.php文件中。

add_filter('manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION', 11);  

function MY_COLUMNS_FUNCTION($columns) { 

} 
+0

感谢Gaurav不幸这个改变不起作用 –

+0

能不能请你分享一下你所面临的错误。 –

+0

没有错误。只是空格为值。 –

0

所以你可以做的是让它有一个跨度在那里显示。像下面

<span id="metawrap"></span> 

而且你可以更新使用jQuery和Ajax调用WordPress的行动来获得元数据的价值。

在引擎收录链接下面的代码粘贴在你的主题 http://pastebin.com/LA4zB4TF

的functions.php文件在你的主题的js文件,里面的document.ready功能引擎收录链接添加下面的jQuery函数

http://pastebin.com/RTYX1Bik

希望这对你有用。

+0

i可以制作一个如下代码:echo“Hello world!
”;它会显示出来,但是从特定的postmeta dosnt工作中获得值:( –

+0

请检查更新的答案是否适合您) –

+0

此代码不起作用。值为空 –

相关问题