-
-
Save andrewlimaza/e6a7f09125d2902c785b3af375ae0a93 to your computer and use it in GitHub Desktop.
<?php | |
/* | |
Add a PDF attachement of the invoice to the checkout email. This code gist must be configured... | |
1) Download the DOMPDF library: https://github.com/dompdf/dompdf | |
1.1) Save to wp-content/your-plugin/ | |
2) Download the PHP SVG library: https://github.com/PhenX/php-svg-lib | |
2.1) Save to dompdf/lib/ | |
3) Download the PHP FONT library: https://github.com/PhenX/php-font-lib | |
3.1) Save to dompdf/lib/ | |
Upon checkout, will create a folder (...wp-content/invoices/[user_name]/ and add a PDF invoice. The content is the exact copy of the email. | |
*/ | |
use Dompdf\Dompdf; | |
function my_init() | |
{ | |
include( dirname( __file__ ) . 'dompdf/autoload.inc.php' ); | |
global $dompdf; | |
$dompdf = new Dompdf(); | |
} | |
add_action('init', 'my_init'); | |
function my_pmpro_email_attachments($attachments, $email) | |
{ | |
global $dompdf; | |
//make sure it's a checkout email (but not the admin one) | |
if(strpos($email->template, "checkout_") !== false && strpos($email->template, "admin") === false) | |
{ | |
//make sure attachments is an array | |
if(is_array($attachments)) | |
$attachments = array(); | |
$dompdf->loadHtml($email->body); | |
$dompdf->render(); | |
$output = $dompdf->output(); | |
$user_login = $email->data['user_login']; | |
$upload_dir = wp_upload_dir(); | |
$user_dirname = $upload_dir['basedir'].'/invoices/'.$user_login; | |
if (!file_exists( $user_dirname )) | |
{ | |
wp_mkdir_p( $user_dirname ); | |
} | |
$date = date("Y-m-d"); | |
$path = $user_dirname."/invoice-".$date.".pdf"; | |
file_put_contents($path, $output); | |
//add our attachment | |
$attachments[] = $path; | |
} | |
return $attachments; | |
} | |
add_filter('pmpro_email_attachments', 'my_pmpro_email_attachments', 10, 2); |
kindly tell me about this
Save to wp-content/your-plugin/
Do i need to add DOMPDF folder Under you-plugin folder? or just plugin?
What error do you get? @duduslm
Hi Andrew,
here is the error message:
An error of type E_ERROR was caused in line 21 of the file /customers/0/2/2/fitcoach24.com/httpd.www/wp-content/plugins/pmpro-customizations/pmpro-customizations.php. Error message: Uncaught Error: Class 'Dompdf\Dompdf' not found in /customers/0/2/2/fitcoach24.com/httpd.www/wp-content/plugins/pmpro-customizations/pmpro-customizations.php:21
Stack trace:
#0 /customers/0/2/2/fitcoach24.com/httpd.www/wp-includes/class-wp-hook.php(287): my_init('')
#1 /customers/0/2/2/fitcoach24.com/httpd.www/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters(NULL, Array)
#2 /customers/0/2/2/fitcoach24.com/httpd.www/wp-includes/plugin.php(478): WP_Hook->do_action(Array)
#3 /customers/0/2/2/fitcoach24.com/httpd.www/wp-settings.php(540): do_action('init')
#4 /customers/0/2/2/fitcoach24.com/httpd.www/wp-config.php(123): require_once('/customers/0/2/...')
#5 /customers/0/2/2/fitcoach24.com/httpd.www/wp-load.php(37): require_once('/customers/0/2/...')
#6 /customers/0/2/2/fitcoach24.com/httpd.www/wp-admin/admin.php(34): require_once('/customers/0/2/...')
#7 /customers/0/2/2/fitcoach24.com/httpd.www/wp-admin/plugins.php(10): require_once('/customers/0/2/...')
#8 {main}
thrown
I tried to update the folder hierarchy according to your code, so now it looks like this:
+wp-content/plugins
| +pmpro-customizations
| | +Dompdf/Dompdf
| | | +php-svg-lib
| | | +php-font-lib
| | | - ..
| | | - ..
| | - pmpro-customizations.php
but still facing a technical issue
@duduslm, I've moved over to building a plugin for this instead. You can grab it off Github if you'd like to test it. I think the path on line 20 should be adjusted a bit further to be:
include( dirname(__file__) . '/dompdf/autoload.inc.php' );
I have updated the code and it should fix the issue now.
Problem with the logo
pmpro-pdf-invoices {{logo_image}}
image not found or type unknown
Hi @dloignon
Sorry to hear about this issue, please can you reach out to https://yoohooplugins.com/support and we'll assist you further.
Thank you :)