https://i.gyazo.com/0d6905296a6dff1d06adf0fda9a6462f.png
you can see the problem here https://bizbergthemes.com/business-event-pro/
They were incredibly prompt, courteous, and made the entire process so easy. On top of that, their email support for the “Table Rate Shipping” plugin was fantastic! They provided clear and detailed explanations, leaving me very impressed.
If you’re looking for reliable plugins and a company that truly prioritizes customer satisfaction, JEM Products is the way to go! Thank you.
]]>LEAVE.ME.ALONE.
]]>There’s also another form on the site – same error.
I’ve just tried changing the recaptcha keys – in case they were out of date.. same issue
Any ideas?
]]>Like I wrote in the title, I want to add a banner to a specific product in the main shop page – something like a wrap at a 45° angle.
I tried to just add a banner on the image I used for the thumbnail, but it doesn’t look good, because the images are smaller.
The best attempt I had is to use background-image: url in CSS, but the thing is, that I need the background image to be in front of the actual thumbnail image.
I tried with z-index, but it doesn’t do anything.
I think the problem would also be, that I don’t know how big the image would actually have to be if I did it like that.
What would be the best approach for me?
Kind regards
]]>I need to add additional information to the e-mail that is sent to a customer, when they use Direct Bank Transfer as a payment method. What I need is a reference number.
I would need the reference look like this:
SI 00 {order_number}
Other info is displayed nicely through default settings in WooCommerce > Settings > Payment > Direct Bank Transfer
Kind regards
]]>I have 4 payment options on my site – Cash on delivery, Bank transfer, PayPal and Credit card (Stripe). The thing is, that I only want to send the PDF to cash on delivery and bank transfer options.
I’ve searched for the solution myself already and I’ve found this code by @kluver :
// exclude certain payment methods from automatic pdf creation
add_filter( 'wpo_wcpdf_custom_attachment_condition', 'wpo_wcpdf_exclude_payment_method', 100, 4 );
function wpo_wcpdf_exclude_payment_method ( $condition, $order, $status, $document ) {
$excluded_methods = array( 'stripe', 'bacs' );
$payment_method = get_post_meta( $order->id, '_payment_method', true );
if ( $document == 'invoice' && in_array( $payment_method, $excluded_methods ) ) {
return false;
} else {
return $condition;
}
}
The thing is – I’m average with css, however, functions.php are way out of my league. I know I need to add them to the excluded_methods array, but I don’t know how to target them.
Kind regards
]]>Once in a while, the foreach loop for sending the emails stops in the middle of its execution. For example, we have a newsletter with 4000 subscribers. Once in a while, the program randomly stops its sending procedure at around 2500 emails. When this happens, there are literally no signs of any errors and there is also nothing to be seen in the debug log.
I have tried the following things to fix the issue:
– Different sender; we switched from Sendgrid to SMTPeter (Dutch SMTP service)
– Delays; we have tried whether placing a wait after x number of emails would have any impact because there might be too many requests per minute, but this was not the case.
– Disable plugins; For 5 weeks we thought we had found the problem. WordFence seemed to be the problem, unfortunately, the send function stopped again last week and this did not appear to be causing the problems. Just to show how unstable it really is. It can go well for 5 weeks and then not for 2 weeks.
– Rewriting of functions
– Logging, we write values ??to a txt file after every important step to keep track of where the send function stops. This is just to see which users have received an email and which still need to receive it so that we can continue sending it from there.
– Debug log, the annoying thing is that even when we have the wp_debug on, nothing comes up that indicates a cause of crashing.
To schedule the sender I use the WP_Cron to run the task in the background. From there the following function is triggered;
Below, the code I wrote in stripped format. I removed all the $message additions as this is just HTML with some variables of ACF for the email. I translated it so it’s easier to understand.
<?php
function send_email($edition_id, $post)
{
require_once('SMTPeter.php'); //Init SMTPeter Sender
$myfile = fopen("log.txt", "a") or die("Unable to open file!"); //Open custom logfile
$editionmeta = get_post_meta($edition_id); //Get data of edition
$users = get_users();
$args = array(
'post_type' => 'articles',
'post_status' => 'publish',
'posts_per_page' => -1,
'order' => 'asc',
'meta_key' => 'position',
'orderby' => 'meta_value_num',
'meta_query' => array(
array(
'key' => 'edition_id',
'value' => $edition_id,
'compare' => 'LIKE',
),
),
);
$all_articles = new WP_Query($args); // Get all articles of edition
$i = 0; // Counter users interrested in topic
$j = 0; // Counter sent emails
foreach ($users as $user) { //Loop over all users <---- This is the loop that not always finishes all itterations
$topic_ids = get_field('topicselect_', 'user_' . $user->ID);
$topic_id = $editionmeta['topic_id'][0];
if (in_array($editionmeta['topic_id'][0], $topic_ids)) { // Check if user is interrested in topic.
$i++; // Counter interrested in topic +1.
// Header info
$headerid = $editionmeta['header_id'][0];
$headerimage = get_field('header_image', $headerid);
$headerimagesmall = get_field('header_image_small', $headerid);
// Footer info
$footerid = $editionmeta['footer_id'][0];
$footer1 = get_field('footerblock_1', $footerid);
$footer2 = get_field('footerblock_2', $footerid);
$footer3 = get_field('footerblock_3', $footerid);
$message = '*HTML header newsletter*'; // First piece of content email
if ($all_articles->have_posts()) :
$articlecount = 0; // Set article count to check for empty newsletters
while ($all_articles->have_posts()) : $all_articles->the_post();
global $post;
$art_categories = get_the_category($post->ID); // Get categories of article
$user_categories = get_field('user_categories_', 'user_' . $user->ID); // Get categories user is interrested in
$user_cats = array();
foreach ($user_categories as $user_category) {
$user_cats[] = $user_category->name; // right format for comparison
}
$art_cats = array();
foreach ($art_categories as $art_category) {
$art_cats[] = $art_category->name; // right format for comparison
}
$catcheck = array_intersect($user_cats, $art_cats); // Check if 1 of the article's categories matches one of a user's categories
if (count($catcheck) > 0) { // The moment the array intersect count is greater than 0 (at least 1 category matches), the article is added to the newsletter.
$message .= "*Content of article*"; // Append article to content of newsletter
$articlecount++;
}
endwhile;
endif;
if ($articlecount > 0) { //As soon as the newsletter contains at least 1 article, it will be sent.
$j++; //Sent email counter.
$mailtitle = $editionmeta['mail_subject'][0]; // Title of the email
$sender = new SMTPeter("*API Key*"); // Class SMTPeter sender
$output = $sender->post("send", array(
'recipients' => $user->user_email, // The receiving email address
'subject' => $mailtitle, // MIME's subject
'from' => "*Sender*", // MIME's sending email address
'html' => $message,
'replyto' => "*Reply To*",
'trackclicks' => true,
'trackopens' => true,
'trackbounces' => true,
'tags' => array("$edition_id")
));
error_log(print_r($output, TRUE));
fwrite($myfile, print_r($output, true));
}
}
}
fclose($myfile);
}
All I want to know is the following;
Why can’t my code run the foreach completely, every time? I mean, it’s quite frustrating to see that it sometimes works like a charm, and the next time it could get stuck again.
Some things I thought about but did not yet implement:
– Rewrite parts of the function into separate functions. Retrieving the content and setting up the HTML for the newsletter could be done in a different function. Besides the fact that it would obviously be an improvement for cleaner code, I just wonder if this could actually be the problem.
– Can a foreach crash due to a fwrite trying to write to a file that is already being written to? So does our log cause the function to not run properly? (Concurrency, but is this a thing in PHP with its workers?)
– Could the entire sending process be written in a different way?
Thanks in advance,
Really looking forward to your feedback and findings
]]>First of all take my heartiest greeting & love for WordPress team. I really so happy to have such a wonderful software to use in my website. Really appreciate it. This is such a helpful and great software.
Thanks & Regards
Abdullah Al Maksud
Freelancer