WooCommerce,在PDF发票中添加自定义字段

时间:2014-03-12 18:01:27

标签: php wordpress pdf e-commerce woocommerce

我是woocommerce的新手,我的客户要求是插件“PDF发票”也应该在生成的PDF文件中显示产品说明。

这是我的代码。

/**
* Add SKU to PDF order heading
*/
add_filter ( 'pdf_template_table_headings' , 'custom_pdf_table_headers' );

function custom_pdf_table_headers() {

    $headers =  '<table class="shop_table orderdetails" width="100%">' . 
                '<thead>' .
                '<tr><th colspan="7" align="left"><h2>' . esc_html__('Order Details', PDFLANGUAGE) . '</h2></th></tr>' .
                '<tr>' .
                '<th width="5%" valign="top" align="right">'  . __( 'Qty', PDFLANGUAGE )        . '</th>' .                
                '<th width="30%" valign="top" align="left">'  . __( 'Product', PDFLANGUAGE )    . '</th>' .
                '<th width="20%" valign="top" align="right">' . __( 'Description', PDFLANGUAGE )        . '</th>' .    
                '<th width="9%" valign="top" align="right">'  . __( 'Price Ex', PDFLANGUAGE )   . '</th>' .
                '<th width="9%" valign="top" align="right">'  . __( 'Total Ex.', PDFLANGUAGE )  . '</th>' .
                '<th width="7%" valign="top" align="right">'  . __( 'Tax', PDFLANGUAGE )        . '</th>' .
                '<th width="10%" valign="top" align="right">' . __( 'Price Inc', PDFLANGUAGE )  . '</th>' .
                '<th width="10%" valign="top" align="right">' . __( 'Total Inc', PDFLANGUAGE )  . '</th>' .
                '</tr>' .
                '</thead>' .
                '</table>';

    return $headers;

}

/**
 * Add SKU to order line
 */
add_filter ( 'pdf_template_line_output' , 'custom_pdf_lines', 10, 2 );

function custom_pdf_lines ( $line, $order_id ) {
    global $woocommerce;
    $order   = new WC_Order( $order_id );

    $pdflines  = '<table width="100%">';
    $pdflines .= '<tbody>';

    if ( sizeof( $order->get_items() ) > 0 ) : 

        foreach ( $order->get_items() as $item ) {

            if ( $item['qty'] ) :

                $line = '';
                $item_loop++;

                $_product   = $order->get_product_from_item( $item );
                $item_name  = $item['name'];
                $item_meta  = new WC_Order_Item_Meta( $item['item_meta'] );

                if ( $meta = $item_meta->display( true, true ) )
                    $item_name .= ' ( ' . $meta . ' )';

                $line =     '<tr>' .
                            '<td valign="top" width="5%" align="right">' . $item['qty'] . ' x</td>' .
                            '<td valign="top" width="40%">' .  $item_name . '</td>' .
                            '<td valign="top" width="10%">' .  $_product->get_sku() . '</td>' .
                            '<td valign="top" width="9%" align="right">' .  woocommerce_price( $item['line_subtotal'] ) . '</td>' . 
                            '<td valign="top" width="9%" align="right">' .  woocommerce_price( $item['qty']*$item['line_subtotal'] ) . '</td>' .    
                            '<td valign="top" width="7%" align="right">' .  woocommerce_price( $item['line_tax'] ) . '</td>' .          
                            '<td valign="top" width="10%" align="right">' .  woocommerce_price( $item['line_subtotal'] + $item['line_tax'] ) . '</td>' .
                            '<td valign="top" width="10%" align="right">' .  woocommerce_price( $item['qty']*($item['line_subtotal'] + $item['line_tax']) ) . '</td>' .
                            '</tr>' ;

                $pdflines .= $line;
            endif;
        }

    endif;

    $pdflines .=    '</tbody>';
    $pdflines .=    '</table>';

    return $pdflines;
}

我想在PDF中添加说明细节。我应该通过哪个变量?

0 个答案:

没有答案