WordPress’e LinkedIn Paylaşım Butonu Ekleme: B2B İçerikler İçin
B2B içerik pazarlamasında LinkedIn’in önemi tartışılmaz. Bir WordPress sitesi işletiyorsanız ve hedef kitleniz profesyoneller, karar vericiler veya kurumsal alıcılarsa, içeriklerinize LinkedIn paylaşım butonu eklemek hem organik erişiminizi artırır hem de içeriğinizin doğru kitleye ulaşmasını sağlar. Bu yazıda, WordPress functions.php dosyasını kullanarak LinkedIn paylaşım butonu eklemenin farklı yollarını, özelleştirme seçeneklerini ve gerçek dünya senaryolarını ele alacağız.
Neden Plugin Değil, functions.php?
Pek çok sysadmin ve WordPress geliştiricisi bu soruyu sorar. “ShareThis veya AddToAny gibi bir plugin kursam olmaz mı?”
Evet, olur. Ama şunu düşünün: Her kurduğunuz plugin bir yük. Özellikle paylaşım butonları için tasarlanmış pluginler genellikle onlarca sosyal ağ için kod yükler, harici JavaScript dosyaları çeker ve sayfa hızınızı olumsuz etkiler. Oysa B2B odaklı bir sitede muhtemelen sadece LinkedIn’e ihtiyacınız var. Facebook butonu ekleyip kurumsal karar vericilerin dikkatini dağıtmak istemiyorsunuz.
functions.php yaklaşımının avantajları:
- Gereksiz plugin yükü yok
- Tam kontrol sizde
- Sayfa yüklenme süresi minimal etkilenir
- LinkedIn API değişikliklerine hızlı uyum sağlayabilirsiniz
- Child theme kullanıyorsanız güncellemelerden etkilenmezsiniz
LinkedIn Paylaşım URL Yapısı
LinkedIn’in paylaşım mekanizması oldukça basittir. Karmaşık OAuth işlemleri veya API anahtarı gerektirmez. Temel URL yapısı şöyledir:
https://www.linkedin.com/sharing/share-offsite/?url=PAYLASIM_URL
Bu kadar. LinkedIn, URL parametresini alır ve kullanıcıya kendi feed’inde paylaşım yapabileceği bir diyalog açar. Modern tarayıcılar için bu yeterlidir ve son derece güvenilir çalışır.
Parametre detayları:
- url: Paylaşılacak sayfa URL’si (URL encode edilmiş olmalı)
- title: Başlık parametresi (LinkedIn artık bunu meta taglardan otomatik çekiyor, ama eski tarayıcı uyumluluğu için eklenebilir)
Temel LinkedIn Paylaşım Butonu Fonksiyonu
functions.php dosyanıza ekleyeceğiniz en basit versiyon şudur:
<?php
function add_linkedin_share_button() {
if ( ! is_single() && ! is_page() ) {
return;
}
$current_url = urlencode( get_permalink() );
$linkedin_url = 'https://www.linkedin.com/sharing/share-offsite/?url=' . $current_url;
$button_html = '<div class="linkedin-share-wrapper">';
$button_html .= '<a href="' . esc_url( $linkedin_url ) . '" target="_blank" rel="noopener noreferrer" class="linkedin-share-btn">';
$button_html .= '<span class="linkedin-icon">in</span>';
$button_html .= '<span class="linkedin-text">LinkedIn'de Paylaş</span>';
$button_html .= '</a>';
$button_html .= '</div>';
return $button_html;
}
Bu fonksiyon temel görevi yapar ama gerçek dünya kullanımı için biraz daha geliştirmemiz gerekiyor.
Shortcode Olarak Kullanım
Butonu istediğiniz yere yerleştirebilmek için shortcode’a çevirmek mantıklı bir yaklaşımdır. Özellikle sayfa editöründen kontrol etmek istiyorsanız bu yöntem çok işe yarar:
<?php
function linkedin_share_shortcode( $atts ) {
$atts = shortcode_atts(
array(
'text' => 'LinkedIn'de Paylaş',
'class' => 'linkedin-share-btn',
'style' => 'default',
),
$atts,
'linkedin_share'
);
$current_url = urlencode( get_permalink() );
$current_title = urlencode( get_the_title() );
$linkedin_url = 'https://www.linkedin.com/sharing/share-offsite/?url=' . $current_url;
ob_start();
?>
<div class="linkedin-share-wrapper linkedin-style-<?php echo esc_attr( $atts['style'] ); ?>">
<a href="<?php echo esc_url( $linkedin_url ); ?>"
target="_blank"
rel="noopener noreferrer"
class="<?php echo esc_attr( $atts['class'] ); ?>"
aria-label="Bu içeriği LinkedIn'de paylaş"
onclick="return trackLinkedInShare('<?php echo esc_js( $current_title ); ?>');">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/>
</svg>
<span><?php echo esc_html( $atts['text'] ); ?></span>
</a>
</div>
<?php
return ob_get_clean();
}
add_shortcode( 'linkedin_share', 'linkedin_share_shortcode' );
Kullanımı oldukça basittir. Editörde şunu yazmanız yeterli:
[linkedin_share text="Bunu Profesyonellerle Paylaş" style="blue"]
İçerik Sonuna Otomatik Ekleme
B2B blog yazılarında her yazının sonuna otomatik olarak buton eklemek en yaygın kullanım senaryosudur. the_content filtresini kullanarak bunu kolayca yapabilirsiniz:
<?php
function auto_add_linkedin_button( $content ) {
// Sadece tekil yazılarda ve ana döngüde çalıştır
if ( ! is_single() || ! in_the_loop() || ! is_main_query() ) {
return $content;
}
// Belirli kategorileri hariç tut (örnek: 'duyurular' kategorisi)
if ( has_category( 'duyurular' ) ) {
return $content;
}
$current_url = urlencode( get_permalink() );
$current_title = urlencode( get_the_title() );
$linkedin_url = 'https://www.linkedin.com/sharing/share-offsite/?url=' . $current_url;
$share_section = '<div class="linkedin-share-section">';
$share_section .= '<p class="share-prompt"><strong>Bu içerik işinize yaradıysa LinkedIn ağınızla paylaşın:</strong></p>';
$share_section .= '<a href="' . esc_url( $linkedin_url ) . '" ';
$share_section .= 'target="_blank" rel="noopener noreferrer" ';
$share_section .= 'class="linkedin-auto-share-btn">';
$share_section .= 'LinkedIn'de Paylaş';
$share_section .= '</a>';
$share_section .= '</div>';
return $content . $share_section;
}
add_filter( 'the_content', 'auto_add_linkedin_button' );
Post Type’a Göre Özelleştirme
Gerçek dünya senaryosunda farklı içerik türleri için farklı mesajlar kullanmak istersiniz. Bir SaaS şirketinin WordPress sitesini düşünün: Blog yazıları, vaka çalışmaları (case studies) ve whitepaper’lar için farklı paylaşım metinleri çok daha etkili olacaktır:
<?php
function get_linkedin_share_config() {
$post_type = get_post_type();
$configs = array(
'post' => array(
'text' => 'Bu yazıyı LinkedIn'de paylaş',
'prompt' => 'Faydalı buldunuz mu? Meslektaşlarınızla paylaşın.',
'icon' => true,
),
'case-study' => array(
'text' => 'Vaka Çalışmasını Paylaş',
'prompt' => 'Bu başarı hikayesini ağınızla paylaşın.',
'icon' => true,
),
'whitepaper' => array(
'text' => 'Raporu Paylaş',
'prompt' => 'Endüstri raporunu takiplerinize gönderin.',
'icon' => true,
),
'default' => array(
'text' => 'LinkedIn'de Paylaş',
'prompt' => 'Bu içeriği ağınızla paylaşın.',
'icon' => true,
),
);
return isset( $configs[ $post_type ] ) ? $configs[ $post_type ] : $configs['default'];
}
function render_linkedin_button_by_type() {
$config = get_linkedin_share_config();
$current_url = urlencode( get_permalink() );
$linkedin_url = 'https://www.linkedin.com/sharing/share-offsite/?url=' . $current_url;
$output = '<div class="linkedin-contextual-share">';
$output .= '<p class="share-context-text">' . esc_html( $config['prompt'] ) . '</p>';
$output .= '<a href="' . esc_url( $linkedin_url ) . '" ';
$output .= 'target="_blank" rel="noopener noreferrer" ';
$output .= 'class="linkedin-btn linkedin-btn--' . esc_attr( get_post_type() ) . '">';
$output .= esc_html( $config['text'] );
$output .= '</a>';
$output .= '</div>';
return $output;
}
JavaScript ile Popup Pencere
LinkedIn paylaşım linkini yeni sekmede açmak yerine küçük bir popup pencerede açmak, kullanıcı deneyimini önemli ölçüde iyileştirir. Kullanıcı sitenizden ayrılmadan paylaşım yapabilir:
<?php
function add_linkedin_share_scripts() {
// Sadece tekil içeriklerde yükle
if ( ! is_single() && ! is_page() ) {
return;
}
?>
<script type="text/javascript">
function openLinkedInShare(url) {
var shareUrl = 'https://www.linkedin.com/sharing/share-offsite/?url=' + encodeURIComponent(url);
var width = 600;
var height = 600;
var left = (screen.width / 2) - (width / 2);
var top = (screen.height / 2) - (height / 2);
window.open(
shareUrl,
'linkedin-share-dialog',
'width=' + width + ',' +
'height=' + height + ',' +
'top=' + top + ',' +
'left=' + left + ',' +
'toolbar=0,' +
'location=0,' +
'menubar=0,' +
'directories=0,' +
'scrollbars=0'
);
return false;
}
// Sayfa yüklendikten sonra tüm LinkedIn butonlarına event listener ekle
document.addEventListener('DOMContentLoaded', function() {
var linkedinBtns = document.querySelectorAll('.linkedin-share-btn, .linkedin-auto-share-btn');
linkedinBtns.forEach(function(btn) {
btn.addEventListener('click', function(e) {
e.preventDefault();
openLinkedInShare(window.location.href);
});
});
});
function trackLinkedInShare(postTitle) {
// Google Analytics 4 ile takip
if (typeof gtag !== 'undefined') {
gtag('event', 'share', {
'method': 'LinkedIn',
'content_type': 'article',
'content_id': postTitle
});
}
// Eski Universal Analytics
if (typeof ga !== 'undefined') {
ga('send', 'social', 'LinkedIn', 'share', window.location.href);
}
return true;
}
</script>
<?php
}
add_action( 'wp_footer', 'add_linkedin_share_scripts' );
CSS ile Butonun Stillendirilmesi
Butonu LinkedIn’in kurumsal mavi rengiyle markalı bir şekilde göstermek için aşağıdaki CSS’i wp_head hook’u üzerinden ekleyebilirsiniz:
<?php
function add_linkedin_share_styles() {
if ( ! is_single() && ! is_page() ) {
return;
}
?>
<style type="text/css">
.linkedin-share-wrapper,
.linkedin-share-section {
margin: 30px 0;
padding: 20px;
background: #f3f6f9;
border-left: 4px solid #0077b5;
border-radius: 4px;
}
.linkedin-share-btn,
.linkedin-auto-share-btn {
display: inline-flex;
align-items: center;
gap: 8px;
background-color: #0077b5;
color: #ffffff !important;
padding: 10px 20px;
border-radius: 4px;
text-decoration: none !important;
font-weight: 600;
font-size: 14px;
transition: background-color 0.2s ease;
border: none;
cursor: pointer;
}
.linkedin-share-btn:hover,
.linkedin-auto-share-btn:hover {
background-color: #005e93;
color: #ffffff !important;
}
.linkedin-share-btn svg,
.linkedin-auto-share-btn svg {
flex-shrink: 0;
}
.share-prompt {
margin-bottom: 12px;
color: #444;
font-size: 15px;
}
.linkedin-contextual-share {
margin: 40px 0 20px;
text-align: center;
padding: 30px;
background: linear-gradient(135deg, #f3f6f9, #e8edf2);
border-radius: 8px;
}
</style>
<?php
}
add_action( 'wp_head', 'add_linkedin_share_styles' );
WooCommerce Ürün Sayfaları için LinkedIn Paylaşımı
B2B e-ticaret sitelerinde ürün veya hizmetleri LinkedIn’de paylaşmak sık karşılaşılan bir ihtiyaçtır. WooCommerce ürün sayfalarına özel bir yerleştirme yapalım:
<?php
function add_linkedin_share_to_woo_product() {
// WooCommerce aktif mi kontrol et
if ( ! class_exists( 'WooCommerce' ) ) {
return;
}
global $product;
if ( ! $product ) {
return;
}
$product_url = urlencode( get_permalink( $product->get_id() ) );
$product_name = urlencode( $product->get_name() );
$linkedin_url = 'https://www.linkedin.com/sharing/share-offsite/?url=' . $product_url;
$product_sku = $product->get_sku() ? ' (SKU: ' . $product->get_sku() . ')' : '';
echo '<div class="woo-linkedin-share">';
echo '<p class="woo-share-label">Bu ürünü meslektaşlarınızla paylaşın' . esc_html( $product_sku ) . ':</p>';
echo '<a href="' . esc_url( $linkedin_url ) . '" ';
echo 'target="_blank" rel="noopener noreferrer" ';
echo 'class="linkedin-share-btn woo-linkedin-btn" ';
echo 'onclick="openLinkedInShare('' . esc_js( get_permalink( $product->get_id() ) ) . ''); return false;">';
echo 'LinkedIn'de Paylaş';
echo '</a>';
echo '</div>';
}
// Ürün sayfasında sepete ekle butonunun altına yerleştir
add_action( 'woocommerce_after_add_to_cart_button', 'add_linkedin_share_to_woo_product' );
Sık Karşılaşılan Sorunlar ve Çözümleri
Paylaşım önizlemesi yanlış görünüyor: LinkedIn, Open Graph meta taglarını kullanarak önizleme oluşturur. Yoast SEO veya RankMath gibi bir SEO eklentisi kullanıyorsanız og:title, og:description ve og:image taglarının doğru ayarlandığından emin olun. Değişikliklerden sonra LinkedIn’in önbelleği temizlemek için Post Inspector aracını kullanabilirsiniz: https://www.linkedin.com/post-inspector/
Buton mobilde küçük kalıyor: CSS’e aşağıdaki eklemeyi yapın:
@media (max-width: 768px) {
.linkedin-share-btn,
.linkedin-auto-share-btn {
width: 100%;
justify-content: center;
padding: 14px 20px;
font-size: 16px;
}
.linkedin-share-section {
text-align: center;
}
}
Child theme kullanımı hakkında: Eğer parent theme güncellemelerinden etkilenmek istemiyorsanız, tüm bu kodları parent theme’in functions.php yerine child theme’in functions.php dosyasına ekleyin. Zaten WordPress best practice’i de bu yönde.
functions.php şişmesin diye: Kodlar büyüdükçe functions.php’yi şişirmemek için /inc/linkedin-share.php gibi ayrı bir dosya oluşturun ve bunu functions.php’den require ile dahil edin:
<?php
// functions.php içinde
if ( file_exists( get_stylesheet_directory() . '/inc/linkedin-share.php' ) ) {
require_once get_stylesheet_directory() . '/inc/linkedin-share.php';
}
Gerçek Dünya Senaryosu: SaaS Şirketi Blog’u
Bir müşteri projesi üzerinden somutlaştıralım. B2B SaaS ürünü olan bir şirketin WordPress blogunda şu gereksinimleri vardı:
- Tüm blog yazılarının sonuna LinkedIn butonu
- Sadece “industri-analizi” ve “vaka-calismasi” kategorilerinde buton görünsün
- Yazının paylaşım sayısı logu tutulsun (basit bir custom post meta ile)
- Mobil uyumlu olsun
Bu senaryo için kategoriye göre filtreleme eklenmiş, daha kapsamlı bir versiyon şöyle görünür:
<?php
function b2b_linkedin_share_filter( $content ) {
if ( ! is_single() || ! in_the_loop() || ! is_main_query() ) {
return $content;
}
// Sadece belirlenen kategorilerde göster
$target_categories = array( 'industri-analizi', 'vaka-calismasi', 'teknik-blog' );
$show_button = false;
foreach ( $target_categories as $cat_slug ) {
if ( has_category( $cat_slug ) ) {
$show_button = true;
break;
}
}
if ( ! $show_button ) {
return $content;
}
$post_id = get_the_ID();
$current_url = urlencode( get_permalink( $post_id ) );
$linkedin_url = 'https://www.linkedin.com/sharing/share-offsite/?url=' . $current_url;
// Paylaşım sayısını artır (basit tracking)
$share_count = (int) get_post_meta( $post_id, '_linkedin_share_intent', true );
$share_section = '<div class="b2b-linkedin-cta">';
$share_section .= '<div class="b2b-share-inner">';
$share_section .= '<h4>Bu analiz işinize yaradı mı?</h4>';
$share_section .= '<p>LinkedIn ağınızdaki karar vericiler ve profesyonellerle paylaşın.</p>';
$share_section .= '<a href="' . esc_url( $linkedin_url ) . '" ';
$share_section .= 'target="_blank" rel="noopener noreferrer" ';
$share_section .= 'class="linkedin-share-btn" ';
$share_section .= 'data-post-id="' . esc_attr( $post_id ) . '">';
$share_section .= 'LinkedIn'de Paylaş';
if ( $share_count > 10 ) {
$share_section .= ' <span class="share-count-badge">' . $share_count . ' kişi paylaştı</span>';
}
$share_section .= '</a>';
$share_section .= '</div>';
$share_section .= '</div>';
return $content . $share_section;
}
add_filter( 'the_content', 'b2b_linkedin_share_filter' );
// AJAX ile share count güncelle
function update_linkedin_share_count() {
check_ajax_referer( 'linkedin_share_nonce', 'nonce' );
$post_id = intval( $_POST['post_id'] );
if ( ! $post_id ) {
wp_die();
}
$current = (int) get_post_meta( $post_id, '_linkedin_share_intent', true );
update_post_meta( $post_id, '_linkedin_share_intent', $current + 1 );
wp_send_json_success( array( 'count' => $current + 1 ) );
}
add_action( 'wp_ajax_update_linkedin_share', 'update_linkedin_share_count' );
add_action( 'wp_ajax_nopriv_update_linkedin_share', 'update_linkedin_share_count' );
Sonuç
LinkedIn paylaşım butonu eklemek göründüğünden daha fazla fırsatı barındırıyor. Yalnızca bir buton yerleştirmekle kalmıyor, içeriklerinizin profesyonel ağlarda dolaşımını aktif olarak tetikliyorsunuz. B2B içerik stratejisinin temel taşlarından biri olan LinkedIn erişimi için plugin bağımlılığına girmeden, functions.php üzerinden tam kontrol sahibi olabilirsiniz.
Özetlemek gerekirse şu adımları izleyin: İlk olarak temel shortcode versiyonunu kurun ve test edin. Ardından içerik türlerinize göre özelleştirme ekleyin. Open Graph taglarınızın düzgün ayarlandığından emin olun. Son olarak Google Analytics entegrasyonuyla paylaşım etkinliğini ölçmeye başlayın.
Sayfa hızı konusunda dikkatli olun. Eklediğiniz her satır JavaScript potansiyel bir yük. JavaScript bloğunu defer veya async yüklemek için wp_enqueue_script‘i nonce ile birlikte kullanmak, inline script yazmaktan her zaman daha doğru bir yaklaşımdır. Ama prototip aşamasında wp_footer üzerinden inline script tamamen makul bir seçimdir.
Son olarak, LinkedIn’in Open Graph önbelleğini zaman zaman temizlemeyi unutmayın. Özellikle içerik güncelledikten veya featured image değiştirdikten sonra Post Inspector aracından URL’nizi geçirmeniz, bir sonraki paylaşımda önizlemenin doğru görünmesini garantiler.
