Woocommerce 在单个产品页面中获取产品自定义字段值

Woocommerce 在单个产品页面中获取产品自定义字段值,woocommerce,field,frontend,datasheet,Woocommerce,Field,Frontend,Datasheet,任何人都可以帮助我得到下面的代码正常运行。我从其他各种帖子中提取了一些代码来创建它 我需要创建一个自定义字段(数据表),并能够发布一个链接到PDF文件。然后,它应该出现在每个产品页面上的元数据之前 目前的代码如下: add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' ); function woo_add_custom_general_fields() {

任何人都可以帮助我得到下面的代码正常运行。我从其他各种帖子中提取了一些代码来创建它

我需要创建一个自定义字段(数据表),并能够发布一个链接到PDF文件。然后,它应该出现在每个产品页面上的元数据之前

目前的代码如下:

add_action( 'woocommerce_product_options_general_product_data', 
'woo_add_custom_general_fields' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;

echo '<div class="options_group">';

woocommerce_wp_text_input( array( // Text Field type
    'id'          => '_datasheet_url', 
    'label'       => __( 'Datasheet', 'woocommerce' ), 
    'placeholder' => 'http://',
    'desc_tip'    => 'true',
    'description' => __( 'Datasheet URL here.', 'woocommerce' ) 
) );

echo '</div>';
}

add_action( 'woocommerce_process_product_meta', 
'woo_save_custom_general_fields' );
function woo_save_custom_general_fields( $post_id ){

$datasheet_field= $_POST['_datasheet_url'];
if( !empty( $datasheet_field ) )
    update_post_meta( $post_id, '_datasheet_url', esc_attr( $datasheet_field 
) );
}

add_action('woocommerce_product_meta_start', 
'woo_display_custom_general_fields_values', 5);
function woo_display_custom_general_fields_values() {
global $product;

$url = get_post_meta( $post->ID, 'Datasheet', true );

     echo '<img src="http://www.freemansolutions.co.uk/wp-content/uploads/pdf- 
icon.png"> <a href="'.$url.'">Datasheet</a>';
}  
添加操作('woocommerce\u product\u options\u general\u product\u data',
“woo_添加_自定义_常规_字段”);
函数woo_添加_自定义_常规_字段(){
全球$woocmerce,$post;
回声';
woocommerce\u wp\u text\u输入(数组(//文本字段类型
'id'=>'\u数据表\u url',
'label'=>\('Datasheet','woocommerce'),
'占位符'=>'http://',
'desc_tip'=>'true',
'description'=>\('Datasheet URL here','woocommerce')
) );
回声';
}
添加操作('woocommerce\u process\u product\u meta',
“woo_save_custom_general_fields”);
函数woo\u save\u custom\u general\u字段($post\u id){
$datasheet\u field=$\u POST[''u datasheet\u url'];
如果(!空($datasheet_field))
更新发布元数据($post\u id,'.'数据表'.'url',esc\u attr($datasheet\u字段
) );
}
添加操作('woocommerce\u product\u meta\u start',
“woo_显示_自定义_常规_字段_值”,5);
函数woo_显示_自定义_常规_字段_值(){
全球$产品;
$url=get\u post\u meta($post->ID,'Datasheet',true);
回声';
}  

主要错误是
$url=get\u post\u meta($post->ID,'Datasheet',true)
由于未定义
$post
,因此
$post->ID
抛出一个错误,您可以获取URL自定义字段值

请尝试以下操作:

add_action( 'woocommerce_product_options_general_product_data', 'add_datasheet_url_custom_field' );
function add_datasheet_url_custom_field() {
    echo '<div class="options_group">';

    woocommerce_wp_text_input( array(
        'id'          => '_datasheet_url',
        'label'       => __('Datasheet URL', 'woocommerce'),
        'placeholder' => 'http://',
        'desc_tip'    => 'true',
        'description' => __('Set the "Datasheet" URL here.', 'woocommerce'),
    ) );

    echo '</div>';
}

add_action( 'woocommerce_process_product_meta', 'save_datasheet_url_custom_field', 12, 1 );
function save_datasheet_url_custom_field( $post_id ){
    if( isset( $_POST['_datasheet_url'] ) )
        update_post_meta( $post_id, '_datasheet_url', sanitize_text_field( $_POST['_datasheet_url'] ) );
}

add_action('woocommerce_product_meta_start', 'use_datasheet_url_custom_field', 5 );
function use_datasheet_url_custom_field() {
    $pdf_url = get_post_meta( get_the_id(), '_datasheet_url', true );
    if( ! empty( $pdf_url ) ){
        $icon_pdf = home_url( '/wp-content/uploads/pdf-icon.png' );
        echo '<img src="'.$icon_pdf.'" /> <a href="'.$pdf_url.'">' . __('Datasheet', 'woocommerce') . '</a>';
    }
}
add_操作('woocommerce_-product_-options_-general_-product_-data'、'add_-datasheet_-url_-custom_-field');
函数添加\数据表\ url\自定义\字段(){
回声';
woocommerce_wp_text_输入(数组(
'id'=>'\u数据表\u url',
“label'=>”(数据表URL)、“woocommerce”),
'占位符'=>'http://',
'desc_tip'=>'true',
'description'=>\uuuuu('在此处设置“数据表”URL.,'woocommerce'),
) );
回声';
}
添加操作('woocommerce\u process\u product\u meta','save\u datasheet\u url\u custom\u field',12,1);
函数保存\数据表\ url\自定义\字段($post\ id){
如果(isset($\u POST[''数据表\u url']))
更新发布元数据($发布id,''数据表url',清理文本字段($发布[''数据表url']);
}
添加操作(“商业、产品、元数据、开始”、“使用数据表、url、自定义字段”,5);
函数使用\数据表\ url\自定义\字段(){
$pdf_url=get_post_meta(get_id(),'u datasheet_url',true);
如果(!空($pdf_url)){
$icon_pdf=home_url('/wp content/uploads/pdf icon.png');
回声';
}
}
代码进入活动子主题(或活动主题)的function.php文件。测试和工作