The Divi Leads split testing (or A/B testing) system is a powerful feature in Divi that helps you optimize your website's performance by comparing different versions of content to see which one performs better. By default, Divi uses a "Round Robin" technique to distribute traffic equally among the variants, ensuring each version gets an equal share of visitors. However, there are scenarios where you might want to allocate traffic differently, such as if you want to show most users the original version to avoid impacting conversions rates too much during testing.
While Divi does not natively support adjusting the traffic split for variants, we can achieve it with some custom code, as given below.
Customizing Split Test Variant Weighting using PHP Code
To customize the variant weighting, we will intercept the process where Divi decides which variant to show next. By default, Divi doesn't allow changing this split, but the following code snippet helps you control the percentage of traffic directed to your primary variant.
add_filter('update_post_metadata', 'db_custom_ab_test_update_meta', 10, 5);
function db_custom_ab_test_update_meta($check, $object_id, $meta_key, $meta_value, $prev_value) {
if ($meta_key === '_et_pb_ab_next_subject') {
$control_percentage = 80; // Amount of time to show the first variant
// Get the list of subjects
$all_subjects_raw = get_post_meta($object_id, '_et_pb_ab_subjects', true);
$all_subjects = false !== $all_subjects_raw ? explode(',', $all_subjects_raw) : array();
if (!empty($all_subjects)) {
// Pick the next variant to show
if (count($all_subjects) === 1 || rand(1, 100) <= $control_percentage) {
// select the first variant
$custom_next_subject_index = 0;
} else {
// randomly select between other variants
$custom_next_subject_index = rand(1, count($all_subjects) - 1);
}
// Update the meta key with the selected variant
remove_filter('update_post_metadata', 'db_custom_ab_test_update_meta', 10, 5);
update_metadata('post', $object_id, $meta_key, $custom_next_subject_index, $prev_value);
add_filter('update_post_metadata', 'db_custom_ab_test_update_meta', 10, 5);
// Prevent the original update from occurring
return true;
}
}
return $check;
}
Related Post: Adding PHP to the Divi Theme
You can add this into the functions.php file of your child theme, or using a plugin such as Code Snippets.
In this code:
- We use the
update_post_metadata
filter to intercept Divi's default variant selection. - The
$control_percentage
variable is set to 80, meaning 80% of the time, the first variant will be shown. - If the condition meets the control percentage criteria, the first variant is selected.
- Otherwise, another variant is randomly selected.
This custom logic overrides Divi’s default behavior, providing more control over how traffic is distributed among your variants.
Adjusting the weighting allows for more granular control over your split tests, enabling you to test more effectively based on your specific needs.
Feel free to adjust the $control_percentage
value in the script to suit your requirements.
0 Comments