私はWooCommerceのバックエンド(注文概要で)に追加の列を表示します。 列には私が定義したカスタムフィールド(納入日)が含まれている必要があります。WooCommerceはカスタム列を表示します
これを行う方法?
私はWooCommerceのバックエンド(注文概要で)に追加の列を表示します。 列には私が定義したカスタムフィールド(納入日)が含まれている必要があります。WooCommerceはカスタム列を表示します
これを行う方法?
今、私はWoocommerceを訪れました。カスタムフィールドの個人登録番号を追加しました。これを[Order overview]ページに表示するようにしました。
私はその列を追加することができましたが、依然として各注文のカスタムフィールドの値を取得できませんでした。ここで
は私がやったことです:
// Removed Existing Order Page collumns
remove_filter('manage_edit-shop_order_columns', 'woocommerce_edit_order_columns');
// Added My own filter to Show the PRN - Personal Registration field
add_filter('manage_edit-shop_order_columns', 'omak_edit_order_columns');
// The omak_edit_order_columns definition
/*** Taken from admin/post_types/shop_order.php ***/
function omak_edit_order_columns($columns){
global $woocommerce;
$columns = array();
$columns["cb"] = "<input type=\"checkbox\" />";
$columns["order_status"] = __('Status', 'woocommerce');
$columns["order_title"] = __('Order', 'woocommerce');
$columns["order_prn"] = __('PRN', 'woocommerce'); // This is the line which added the column after the Title Column
$columns["billing_address"] = __('Billing', 'woocommerce');
$columns["shipping_address"] = __('Shipping', 'woocommerce');
$columns["total_cost"] = __('Order Total', 'woocommerce');
$columns["order_comments"] = '<img alt="' . esc_attr__('Order Notes', 'woocommerce') . '" src="' . $woocommerce->plugin_url() . '/assets/images/order-notes_head.png" class="tips" data-tip="' . __('Order Notes', 'woocommerce') . '" width="12" height="12" />';
$columns["note"] = '<img src="' . $woocommerce->plugin_url() . '/assets/images/note_head.png" alt="' . __('Customer Notes', 'woocommerce') . '" class="tips" data-tip="' . __('Customer Notes', 'woocommerce') . '" width="12" height="12" />';
$columns["order_date"] = __('Date', 'woocommerce');
$columns["order_actions"] = __('Actions', 'woocommerce');
return $columns;
}
が、それはあなたを助けている場合、私に教えてください...私は注文ごとにその値を取得する方法に対処するために残されています
。
コメント:関数定義はWooCommerceプラグインのshop_order.phpに存在します。 誰かがそれを分類するかどうか、私に教えてください。
おかげで、 (申し訳ありませんが、そのエラーをチェックするために戻って読むことができませんでした何かで忙しかった)
誰かがまだそれを必要とする場合 - Woocommerceの注文リストに新しい列を追加する方法について。既定の列を設定解除する必要はありません。これを関数.phpに追加するだけで、コードは更新に有効です。
add_filter("manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION');
function MY_COLUMNS_SORT_FUNCTION($columns) {
$custom = array(
//start editing
'MY_COLUMN_ID_1' => 'MY_COLUMN_1_POST_META_ID',
'MY_COLUMN_ID_2' => 'MY_COLUMN_2_POST_META_ID'
//stop editing
);
return wp_parse_args($custom, $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 == 'MY_COLUMN_ID_1') {
echo (isset($data['MY_COLUMN_1_POST_META_ID']) ? $data['MY_COLUMN_1_POST_META_ID'] : '');
}
if ($column == 'MY_COLUMN_ID_2') {
echo (isset($data['MY_COLUMN_2_POST_META_ID']) ? $data['MY_COLUMN_2_POST_META_ID'] : '');
}
//stop editing
}
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['MY_COLUMN_ID_1'] = 'MY_COLUMN_1_TITLE';
$new_columns['MY_COLUMN_ID_2'] = 'MY_COLUMN_2_TITLE';
//stop editing
$new_columns['order_actions'] = $columns['order_actions'];
return $new_columns;
}
次はWooCommerce 2.6.2で動作します。 次の2つの新しいフックになります。受注テーブルヘッダが
add_filter('woocommerce_admin_order_item_headers', 'so13683162_headers');
function so13683162_headers($order) {
echo "<th>FIELD1</th>";
}
add_filter('woocommerce_admin_order_item_values', 'so13683162_values');
function so13683162_values($product) {
if (isset($product -> id)) {
$attrs = get_post_meta($product -> id, "_product_attributes", true);
echo "<td>" . $attrs["FIELD1"]["value"] . "</td>";
}
}
これは、列をリストに追加するのではなく、列を詳細ビューに追加するだけです。 – kevinc
新しいコラムをウーコマース注文表に追加し、すべてのクーポンコードを注文に応じて入手する。 function.phpをコピーして貼り付ける必要があります。
add_filter('manage_edit-shop_order_columns', 'custom_shop_order_column', 11);
function custom_shop_order_column($columns) {
//add columns
$columns['my-column1'] = __('Coupons Code', 'theme_slug');
return $columns;
}
// adding the data for each orders by column (example)
add_action('manage_shop_order_posts_custom_column', 'cbsp_credit_details', 10, 2);
function cbsp_credit_details($column) {
global $post, $woocommerce, $the_order;
$order_id = $the_order->id;
switch ($column) {
case 'my-column1' :
// $myVarOne = wc_get_order_item_meta($order_id, 15, true);
if ($the_order->get_used_coupons()) {
$coupons_count = count($the_order->get_used_coupons());
foreach ($the_order->get_used_coupons() as $coupon) {
echo $coupon;
$i++;
}
echo '</p>';
}
// echo $myVarOne;
break;
}
}
これを試してみてください、あなたはあなたのソリューションは、ちょうどあなたのfunction.phpファイルにコードの下に記述されます。
add_filter('manage_edit-shop_order_columns','your_function_name',10);
function your_function_name($columns){
$columns['delivery_date'] = __('Delivery date','textdomain');
return $columns;
}
add_action('manage_shop_order_posts_custom_column','your_other_function_name',20);
function your_other_function_name($column)
{
swith($column)
{
case 'delivery_date': // your custom code here and do what you want.
}
}
非常によく説明された回答です。最初の例でセミコロンがありません –
これはWooCommerce 2.1.3でもまだ動作していますか?私は試してみましたが、うまくいかないようです。カスタム列は追加されません。フィルタが適用されているようです。関数に 'die()'を置くと、列は作成されません。それ以外は何も変更できません。 – Dre
@Dre最初のフィルタは、デフォルトの10以外の若干高い優先度が必要です。プラグインから実行したときに、 'add_filter( 'manage_edit-shop_order_columns'、 'MY_COLUMNS_FUNCTION'、11);' – orionrush