我正在尝试使用product
帖子类型中的FPDF插件根据数据库中的表格生成PDF。我需要查询仅返回当前产品的post-> ID的数据。
我使用了一个名为output_pdf
的函数,当您单击管理部分中的按钮时会调用该函数。
但是,当我尝试使用global $post
并调用$post->ID
时,出现了错误Trying to get property 'ID' of non-object
如果我像'wc_lottery_log WHERE lottery_id ="72")
这样在查询中手动输入一个ID,它就可以正常工作。
如何将当前帖子的ID传递到SQL查询中?
add_action( 'woocommerce_init', 'my_function_with_wc_functions' );
function my_function_with_wc_functions() {
if( isset($_POST['generate_posts_pdf'])) {
output_pdf();
}
}
add_action('add_meta_boxes', 'as_fpdf_add_custom_box');
function as_fpdf_add_custom_box()
{
$screens = ['product'];
foreach ($screens as $screen) {
add_meta_box(
'as_fpdf_box_id', // Unique ID
'Entry List', // Box title
'as_fpdf_create_admin_page', // Content callback, must be of type callable
$screen, // Post type
'normal' // Priority
);
}
}
function output_pdf() {
global $post;
global $wpdb;
if ( $wpdb->get_var( $wpdb->prepare( 'SELECT lottery_id FROM ' . $wpdb->prefix . 'wc_lottery_log WHERE lottery_id = %d', $post->ID ) ) ) {
$log = $wpdb->get_row( $wpdb->prepare( 'SELECT * FROM ' . $wpdb->prefix . 'wc_lottery_log WHERE lottery_id=%d', $post->ID ) );
global $pdf;
$title_line_height = 10;
$content_line_height = 8;
$pdf->AddPage();
$pdf->SetFont( 'Arial', '', 42 );
$pdf->Write(20, 'Atomic Smash FPDF Tutorial');
foreach( $log as $row ) {
$pdf->SetFont( 'Arial', '', 22 );
$pdf->Write($title_line_height, $post->post_title);
// Add a line break
$pdf->Ln(15);
// Post Content
$pdf->Ln(10);
$pdf->SetFont( 'Arial', '', 12 );
$pdf->WriteHTML($row->ticketid);
}
}
$pdf->Output('D','atomic_smash_fpdf_tutorial.pdf');
exit;
}
function as_fpdf_create_admin_page() {
?>
<div class="wrap">
<h1>Generate Entry List</h1>
<p>Click below to generate a pdf all all lottery entries. </p>
<form method="post" id="as-fdpf-form">
<button class="button button-primary" type="submit" name="generate_posts_pdf" value="generate">Generate PDF from Competiion Entries</button>
</form>
</div>
<?php
}