jaredatch / Shared-Counts

WordPress plugin that leverages SharedCount.com API to quickly retrieve, cache, and display various social sharing counts.
GNU General Public License v2.0
48 stars 16 forks source link

WhatsApp and Telegram share button for Wiki #126

Closed kklem0 closed 9 months ago

kklem0 commented 1 year ago

I made these 2 buttons for my own project but would like to keep a record somewhere for future me. Here're WhatsApp and Telegram share button that could be put into Wiki as additional button.

function shared_counts_mod_admin_services( $services ) {

    $services['whatsapp'] = 'WhatsApp';
    $services['telegram'] = 'Telegram';
    return $services;
}
add_filter( 'shared_counts_admin_services', 'shared_counts_mod_admin_services' );

function shared_counts_mod_link_properties( $link ) {

    switch ( $link['type'] ) {
        case 'whatsapp':
            $link['link'] = 'https://wa.me/?text=' . $link['url'];
            $link['label']  = esc_html__( 'WhatsApp', 'shared-counts' );
            $link['icon'] = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="22.84375" height="32" viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path></svg>';
            $link['target'] = '_blank';
            $link['rel'] = 'nofollow noopener noreferrer';
            $link['attr_title']     = esc_html__( 'Share with WhatsApp', 'shared-counts' );
            $link['social_network'] = 'WhatsApp';
            $link['social_action']  = 'WhatsApp';
            break;
        case 'telegram':
            $link['link'] = "https://t.me/share/url?url={$link['url']}&text={$link['title']}";
            $link['label']  = esc_html__( 'Telegram', 'shared-counts' );
            $link['icon'] = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 51 51">
    <g fill="none" fill-rule="evenodd">
        <path d="M-20 70v-90h90v90z"/>
        <g fill-rule="nonzero">
            <path fill="#FFF"
                  d="M44.691 8.617l-7.13 36.41s-.307 1.663-2.37 1.663c-1.097 0-1.663-.521-1.663-.521L18.082 33.35l-7.557-3.809-9.7-2.58S-.9 26.465-.9 25.037c0-1.19 1.776-1.757 1.776-1.757L41.453 7.16c-.002-.002 1.24-.447 2.144-.445.556 0 1.19.237 1.19.951 0 .476-.096.952-.096.952z"/>
            <path fill="#B0BEC5"
                  d="M23.846 38.133l-6.522 6.423s-.283.219-.662.229a.94.94 0 01-.417-.082l1.835-11.356 5.766 4.786z"/>
            <path fill="#CFD8DC"
                  d="M36.976 14.701a.952.952 0 00-1.335-.177l-25.12 15.033s4.009 11.217 4.62 13.158c.613 1.944 1.104 1.99 1.104 1.99l1.835-11.356 18.717-17.315a.95.95 0 00.179-1.333z"/>
        </g>
    </g>
</svg>';
            $link['target'] = '_blank';
            $link['rel'] = 'nofollow noopener noreferrer';
            $link['attr_title']     = esc_html__( 'Share with Telegram', 'shared-counts' );
            $link['social_network'] = 'Telegram';
            $link['social_action']  = 'Share';
            break;
    }

    return $link;
}

add_filter( 'shared_counts_link', 'shared_counts_mod_link_properties');

function shared_counts_mod_additional_attr( $data, $link = [] ) {
    switch ( $link['type'] ) {
        case 'whatsapp':
            $data[] = 'style="background-color: #25d366;"';
            break;
        case 'telegram':
            $data[] = 'style="background-color: #229ed9;"';
            break;
    }
    return $data;
}

add_filter( 'shared_counts_additional_attr', 'shared_counts_mod_additional_attr', 10, 2);
billerickson commented 9 months ago

Thanks for sharing! I've added it to the wiki