Skip to main content
All CollectionsTroubleshooting and FAQsFrequently Asked QuestionsBlog Module
How to Add Social Share Icons to Posts in the Blog Module Without a Plugin
How to Add Social Share Icons to Posts in the Blog Module Without a Plugin

Customize the Blog module to display Facebook, Twitter and LinkedIn sharing icons for each post.

Updated over 3 months ago

The Blog Module doesn't include sharing icons for each post it displays; however, with the below customization, we can create custom sharing icons that will be displayed on each post.

Pro Tip: To ensure that each sharing icon will be using the correct post information, the Rank Math plugin can also be used to configure the sharing details such as:

  • The Post Title

  • The Post Image

  • The Post Description

  1. Install and activate the Rank Math plugin.

  2. For each of the posts, set the Social Media Snippet.

    Post Social Meida Snippet Editor

    Note: if no image is selected, the Post's featured image will be used instead.

  3. Open the Blog Module's settings, go to Advanced Tab → CSS ID & Classes → CSS Class, and type in divi_blog_with_sharing_icons.

    Blog module CSS class

  4. To ensure that the following script will only run on specific pages, right after the Blog module in the page layout, add a Code module and place the following script inside it:

    <script id="divi-insert-social-icons-for-blog-module-posts">
    function addSocialIcons() {
    // Check if the wrapper element exists
    if (!document.querySelector('.divi_blog_with_sharing_icons')) {
    return;
    }
    // Function to create a social sharing link
    function createSocialLink(url, className, iconClass) {
    var a = document.createElement('a');
    a.href = '#';
    a.rel = 'noopener noreferrer';
    a.className = className;

    // Set innerHTML to include an <i> tag with the specified icon class
    a.innerHTML = '<span class="' + iconClass + '"></span>';

    a.addEventListener('click', function (event) {
    event.preventDefault();
    openPopupCenter(url, iconClass, 600, 400);
    });

    return a;
    }

    function openPopupCenter(url, title, w, h) {
    // Calculate the position to center the popup
    var left = screen.width / 2 - w / 2;
    var top = screen.height / 2 - h / 2;

    // Open a new window with specified dimensions and positions
    window.open(
    url,
    title,
    'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no, width=' +
    w +
    ', height=' +
    h +
    ', top=' +
    top +
    ', left=' +
    left,
    );
    }

    // Select all posts
    var posts = document.querySelectorAll('.divi_blog_with_sharing_icons .et_pb_post');

    // Iterate over each post
    posts.forEach(function (post) {
    // Avoid adding icons multiple times
    if (post.querySelector('.divi-social-share-icons-wrapper')) return;

    // Extract post details
    var title = post.querySelector('.entry-title').textContent;
    var postUrl = post.querySelector('.entry-title a').href;

    // Create sharing URLs
    var facebookUrl = 'https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(postUrl);
    var twitterUrl = 'https://twitter.com/intent/tweet?text=' + encodeURIComponent(title) + '&url=' + encodeURIComponent(postUrl);
    var linkedInUrl = 'https://www.linkedin.com/sharing/share-offsite/?url=' + encodeURIComponent(postUrl);

    // Create social icons
    var socialContainer = document.createElement('div');
    socialContainer.className = 'divi-social-share-icons-wrapper';
    socialContainer.appendChild(
    createSocialLink(
    facebookUrl,
    'divi-social-icon-link',
    'divi-icon-facebook',
    ),
    );
    socialContainer.appendChild(
    createSocialLink(
    twitterUrl,
    'divi-social-icon-link',
    'divi-icon-twitter',
    ),
    );
    socialContainer.appendChild(
    createSocialLink(
    linkedInUrl,
    'divi-social-icon-link',
    'divi-icon-linkedin',
    ),
    );


    // Determine the element to insert the social icons after
    var insertAfterElement;
    var featuredImageUrlExists = post.querySelector('.entry-featured-image-url');
    var blogGridWrapperExists = document.querySelector('.et_pb_blog_grid_wrapper');
    var imageContainer = post.querySelector('.et_pb_image_container');

    if (featuredImageUrlExists && blogGridWrapperExists) {
    insertAfterElement = imageContainer;
    } else if (featuredImageUrlExists && !blogGridWrapperExists) {
    insertAfterElement = featuredImageUrlExists;
    } else {
    insertAfterElement = post.querySelector('p.post-meta');
    }

    // Insert the icons after the determined element
    insertAfterElement.appendChild(socialContainer);
    });
    }

    // Run on initial page load
    document.addEventListener('DOMContentLoaded', addSocialIcons);

    // Run on AJAX completion
    (function ($) {
    $(document).ajaxComplete(function () {
    addSocialIcons();
    });
    })(jQuery)
    </script>

  5. Edit the Blog module, go to Advanced Tab → Custom CSS → Free-Form CSS, and paste in this CSS code:

    selector .divi-social-share-icons-wrapper {
    position: absolute;
    bottom: 10px;
    padding-left: 10px;
    }
    selector .et_pb_no_thumb .divi-social-share-icons-wrapper {
    position: relative;
    bottom: auto;
    padding-left: 0;
    padding-top: 10px;
    }
    selector .divi-social-share-icons-wrapper .divi-social-icon-link span::before {
    font-family: ETModules;
    font-size: 16px;
    color: white;
    padding: 4px 8px;
    border-radius: 5px;
    display: inline-block;
    margin-right: 10px;
    }

    selector .divi-social-share-icons-wrapper .divi-social-icon-link .divi-icon-facebook::before {
    content: "";
    background-color: #3b5998;
    }
    selector .divi-social-share-icons-wrapper .divi-social-icon-link .divi-icon-twitter::before {
    content: "";
    background-color: #000000;
    }
    selector .divi-social-share-icons-wrapper .divi-social-icon-link .divi-icon-linkedin::before {
    content: "";
    background-color: #007bb6;
    }

The result can be seen in the screenshot below:

Custom Sharing icons for Blog module

Note: If some icons are not displayed, ensure that the Dynamic Icons options in Divi → Theme Options → General → Performance Tab is deactivated.

The result of clicking on the custom sharing icons can be seen in the screenshot below, if the post has the correct Open Graph Tags set using the RankMath plugin:

Sharing on  Facebook
Did this answer your question?