从产品页面生成PDF时尝试获取非对象的属性“ ID”

时间:2019-01-10 10:19:55

标签: php sql wordpress

我正在尝试使用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
}

0 个答案:

没有答案