2012-06-17 43 views
7

Tôi đang cố gắng thêm các thẻ meta Facebook og động vào trang Wordpress của tôi. Tôi thêm chúng vào single.php thay vì tệp functions.php thường được đề xuất vì tôi có mã bên dưới cho ứng dụng Facebook mà tôi đã tạo cần thực thi mỗi lần ai đó xem bài đăng trên blog riêng lẻ vì sau đó đăng lên Facebook của họ dòng thời gian mà họ đã đọc bài đăng cụ thể đó. Tôi không muốn sử dụng một plugin vì một số plugin của tôi được sử dụng để xung đột với nhau và đó là một mớ hỗn độn để có được điều đó thẳng ra. Vấn đề lớn nhất của tôi là tôi cần thẻ og:url để động, mặc dù og:title, og:description, og:image, v.v. cũng phải như vậy. Đây là mã tôi có ở đầu tệp single.php của tôi:Dynamic Facebook và Meta Tags trong Wordpress PHP

EDIT: ĐÂY LÀ MÃ LÀM VIỆC TÔI ĐANG BÂY GIỜ SỬ DỤNG. Nhờ sự giúp đỡ của mọi người:

<?php 

$params = array(); 
if(count($_GET) > 0) { 
    $params = $_GET; 
} else { 
    $params = $_POST; 
} 
// defaults 
if($params['type'] == "") $params['type'] = "picture"; 
if($params['locale'] == "") $params['locale'] = "en_US"; 
if($params['description'] == "") $params['description'] = "Visit Internet LOLs for the funniest humor on the web! :)"; 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# internetlolsapp: http://ogp.me/ns/fb/internetlolsapp#"> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 

     <!-- Open Graph meta tags --> 
     <meta property="fb:app_id" content="378076268920252" /> 
     <meta property="og:site_name" content="meta site name"/> 
     <meta property="og:url" content="<?php echo 'http://internetlols.com'.$_SERVER['REQUEST_URI']; ?>"/> 
     <meta property="og:type" content="internetlolsapp:<?php echo $params['type']; ?>"/> 

     <meta property="og:description" content="<?php echo $params['description']; ?>"/> 

    </head> 
</html> 

    <script type="text/javascript"> 
    function postView() 
    { 
     FB.api(
     '/me/internetlolsapp:view', 
     'post', 
     { picture: '<?php echo 'http://internetlols.com'.$_SERVER['REQUEST_URI']; ?>' }, 
     function(response) { 
     if (!response) { 
      // FAIL GRACEFULLY alert('Error occurred : No Response'); 
     } else if (response.error) { 
      // FAIL GRACEFULLY alert('Error occurred : ' + response.error); 
     } else { 
      // SUCCESS alert('View was successful! Action ID: ' + response.id); 
     } 
     }); 
    } 
    </script> 
</head> 
<body> 
    <div id="fb-root"></div> 
    <script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : '378076268920252', // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
     }); 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
    </script> 



</body> 

<body onload='postView()'> 
</html> 

Tôi cố gắng để làm theo các mã nằm ở đây: Generating Facebook Open Graph meta tags dynamically và nó gửi cho timeline Facebook của tôi bất cứ khi nào tôi đọc một bài viết trên blog, nhưng đối với danh hiệu đó của bài trình "title mặc định "và khi tôi nhấp vào 'liên kết tiêu đề mặc định' trên timeline Facebook của tôi, nó sẽ gửi tôi đến URL cho single.php với một loạt các vô nghĩa vào cuối URL

http://MYSITE.com/wp-content/themes/twentyeleven/single.php?fb_action_ids=10151048340001514&fb_action_types=internetlolsapp%3Aview&fb_source=other_multiline 

thay vì URL bài đăng blog . Tôi tự hỏi liệu nó có liên quan gì đến URL mà tôi đặt ở dòng thứ 3 sau "FB.api" hay không, nhưng bất cứ điều gì khác tôi đã thử đặt ở đó ngăn ứng dụng đăng bất kỳ thứ gì lên dòng thời gian Facebook của tôi khi tôi đọc một bài đăng blog.

Bất kỳ ý tưởng nào về cách sửa lỗi này? Tôi đã kéo tóc của tôi ra ngoài trong nhiều ngày với điều này. Bất kỳ trợ giúp sẽ được đánh giá cao nhất! Cảm ơn trước.

Trả lời

1

Với Wordpress, bạn không cần phải chuyển thông tin này qua $_GET hoặc $_POST. Wordpress làm cho tất cả điều này có sẵn cho bạn.

Tôi có thể hiểu mong muốn của bạn không sử dụng plugin, nhưng một số người trong số họ thích Wordpress SEO hoặc Facebook chính thức có thể thêm điều này cho bạn và làm cho cuộc sống của bạn dễ dàng hơn nhiều. Nếu không, hãy tìm một cái đơn giản và tháo rời ra để xem họ đang làm gì.

Nếu bạn thực sự muốn tự cuộn, bạn nên đặt tiêu đề bằng cách sử dụng template tags. Bạn có thể truy xuất tiêu đề bài đăng qua chức năng the_title(). Có những người khác cho các điểm siêu dữ liệu khác mà bạn đang tìm kiếm.

Lưu ý cuối cùng: Tệp og:image của bạn cần phải có kích thước tối thiểu 50px ở một bên hoặc Facebook sẽ không hiển thị. Một Favicon, giống như bạn đang cố gắng sử dụng, hầu như luôn luôn là quá nhỏ. Xem this page để biết thông số hình ảnh đầy đủ.

0

Để thực hiện og:url & og:title năng động, hãy thử sử dụng này

<meta property="og:url" content="<?php echo get_permalink($post->ID); ?>"/> 
<meta property="og:title" content="<?php echo $post->post_title; ?>"/> 

Ngoài ra còn có các dữ liệu khác đó là avilable qua đối tượng $post. Xem ở đây để biết thêm http://www.rlmseo.com/blog/wordpress-post-variable-quick-reference/

+0

sử dụng 'esc_attr()'! – sam

0

tôi đã kết thúc giải quyết nó bằng cách sử dụng các dòng mã sau đây để làm cho Facebook og: thẻ url động:

<meta property="og:url" content="<?php echo 'http://internetlols.com'.$_SERVER['REQUEST_URI']; ?>"/> 

{ picture: '<?php echo 'http://internetlols.com'.$_SERVER['REQUEST_URI']; ?>' }, 
+0

Vì lý do nào đó, điều này không hiệu quả đối với tôi. Tôi đã thực hiện điều này với javascript (chọn ngẫu nhiên một hình ảnh cho thuộc tính og: image). nhưng nó không cập nhật. bất kỳ cơ hội nào để biết tại sao? – aleXela

1

Đối với những gì giá trị của nó, tôi sử dụng một chức năng từ Ryan S. Cowles để làm điều này và nó hoạt động hoàn hảo.Nó chèn dữ liệu động với móc wp_head làm cho mọi trang tải thông tin meta OG động. Bất cứ khi nào một trong các liên kết trang của bạn được sử dụng trong hộp trạng thái FB, nó sẽ gọi thông tin liên quan đến trang đó. Tôi sử dụng hình ảnh nổi bật trên tất cả các trang của tôi nhưng nếu bạn không, bạn có thể dễ dàng viết trong một dự phòng mặc định.

Đây là trong tập tin chức năng của tôi:

/* 
Plugin Name: Facebook Featured Image and Open Graph Meta Tags 
Version: 1.0 
Plugin URI: http://www.ryanscowles.com 
Description: Automatically set the posts' Featured Image as the thumbnail and set appropriate Open Graph meta tags for sharing on Facebook. 
Author: Ryan S. Cowles 
Author URI: http://www.ryanscowles.com 
*/ 

define ('pluginDirName', 'fb-featured-image'); 
// Allow for Facebooks's markup language 
add_filter('language_attributes', 'add_og_xml_ns'); 
function add_og_xml_ns($content) { 
    return ' xmlns:og="http://ogp.me/ns#" ' . $content; 
} 

add_filter('language_attributes', 'add_fb_xml_ns'); 
function add_fb_xml_ns($content) { 
    return ' xmlns:fb="https://www.facebook.com/2008/fbml" ' . $content; 
}  

// Set your Open Graph Meta Tags 
function fbogmeta_header() { 
    if (is_single()) { 
    ?> 
     <meta property="og:title" content="<?php the_title(); ?>"/> 
     <meta property="og:description" content="<?php echo strip_tags(get_the_content($post->ID)); ?>" /> 
     <meta property="og:url" content="<?php the_permalink(); ?>"/> 
     <?php $fb_image = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), 'thumbnail'); ?> 
     <?php if ($fb_image) : ?> 
      <meta property="og:image" content="<?php echo $fb_image[0]; ?>" /> 
      <?php endif; ?> 
     <meta property="og:type" content="<?php 
      if (is_single() || is_page()) { echo "article"; } else { echo "website";} ?>" 
     /> 
     <meta property="og:site_name" content="<?php bloginfo('name'); ?>"/> 

<?php 
    } 
} 
add_action('wp_head', 'fbogmeta_header'); 
2

tôi chuyển thể một hàm từ Facebook Featured Image và mở Graph Meta Tags (http://www.ryanscowles.com) và dán nó vào functions.php, nó hoạt động! (wordpress 3.5.1)

<?php 
//function to limit description to 300 characters 
function limit($var, $limit) { 
    if (strlen($var) > $limit) { 
     return substr($var, 0, $limit) . '...'; 
    } 
    else { 
     return $var; 
    } 
} 

// Set your Open Graph Meta Tags 
function fbogmeta_header() { 
    if (is_single()) { 
     //getting the right post content 
     $postsubtitrare = get_post_meta($post->ID, 'id-subtitrare', true); 
     $post_subtitrare = get_post($postsubtitrare); 
     $content = limit(strip_tags($post_subtitrare-> post_content),297); 
     ?> 
     <meta property="og:title" content="<?php the_title(); ?>"/> 
     <meta property="og:description" content="<?php echo $content; ?>" /> 
     <meta property="og:url" content="<?php the_permalink(); ?>"/> 
     <?php $fb_image = wp_get_attachment_image_src(get_post_thumbnail_id( get_the_ID()), 'thumbnail'); ?> 
     <?php if ($fb_image) : ?> 
     <meta property="og:image" content="<?php echo $fb_image[0]; ?>" /> 
     <?php endif; ?> 
     <meta property="og:type" content="<?php 
     if (is_single() || is_page()) { echo "article"; } else { echo "website";}  ?>" 
     /> 
     <meta property="og:site_name" content="<?php bloginfo('name'); ?>"/> 
     <?php 
     } 
     } 
add_action('wp_head', 'fbogmeta_header'); 
?> 
Các vấn đề liên quan