添加post row动作以调用函数而不渲染WP-Admin UI

时间:2018-03-21 16:21:27

标签: wordpress

我使用以下代码为帖子行操作添加新链接。

add_filter( 'post_row_actions', 'pdf_row_actions', 10, 2 );
function pdf_row_actions( $actions, WP_Post $post ) {
    if ( $post->post_type == 'carte' ) {
      $url = admin_url('admin.php?page=generate_pdf_carte&id='.$post->ID);
      $actions['generate-pdf'] = '<a href="'.$url.'" title="PDF generieren" rel="permalink">PDF herunterladen</a>';
    }

    return $actions;
}

function generate_pdf_carte(){

  $options = new Options();
  $options->set('tempDir', 'tmp');
  $dompdf = new Dompdf($options);

  $dompdf->loadHtmlFile('http://localhost/xxx/output.php');

  // (Optional) Setup the paper size and orientation
  $dompdf->setPaper('A4');
  $dompdf->render();
  $dompdf->stream();
}

当我点击此链接时,我收到以下消息:无法传输pdf:标头已发送

如何在不渲染管理界面的情况下为此generate_pdf_carte()函数添加网址?

1 个答案:

答案 0 :(得分:1)

您可以对需要设置标题的内容使用admin_init hook。

add_action( 'admin_init', 'maybe_generate_pdf_carte' );   
function maybe_generate_pdf_carte() {  
    if ( isset( $_GET['page'], $_GET['id'] ) && $_GET['page'] == 'generate_pdf_carte' && (int)$_GET['id'] )
        generate_pdf_carte();
}