8

Wordpressサイトに動的なFacebookogメタタグを追加しようとしています。私が作成したFacebookアプリのコードは、Facebookに投稿するため、誰かが個々のブログ投稿を表示するたびに実行する必要があるため、通常推奨されるfunctions.phpファイルではなくsingle.phpに追加しています。彼らがその特定の投稿を読んだタイムライン。プラグインのいくつかは互いに競合していたため、プラグインを使用したくありません。プラグインを修正するのは面倒でした。私の最大の問題は、og:urlタグを動的にする必要があることですが、、、なども動的であるog:title必要og:descriptionog:imageあります。これが私のsingle.phpファイルの上部にあるコードです:

編集:これが私が現在使用している作業コードです。みんなの助けに感謝します:

    <?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>

私はここにあるコードに従おうとしています:Facebook Open Graphメタタグを動的に生成 し、ブログ投稿を読むたびにFacebookタイムラインに投稿しますが、タイトルについてはもちろん「デフォルトのタイトル」を投稿し、「 Facebookのタイムラインにある「デフォルトのタイトル」リンクを使用すると、URLの最後に意味のないものがたくさんあるsingle.phpのURLに送られます。

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

ブログ投稿のURLの代わりに。「FB.api」の3行目に入力したURLと関係があるのではないかと思いますが、他に入力しようとすると、Facebookのタイムラインにアプリが何も投稿できなくなります。ブログ投稿。

これを修正する方法はありますか?私はこれで何日も髪を抜いてきました。どんな助けでも大歓迎です!前もって感謝します。

4

5 に答える 5

2

その価値のために、Ryan S. Cowles の関数を使用してこれを行い、完全に機能します。wp_head フックを使用してデータを動的に挿入し、すべてのページで OG メタ情報を動的にロードします。ページ リンクの 1 つが FB ステータス ボックスで使用されると、そのページに関連する情報が呼び出されます。私はすべてのページでアイキャッチ画像を使用していますが、そうでない場合は、デフォルトのフォールバックに簡単に書き込むことができます.

これは私の関数ファイルにあります:

/*
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');
于 2013-07-15T15:27:10.380 に答える
2

Facebook Featured Image と Open Graph Meta Tags ( http://www.ryanscowles.com ) から関数を採用し、functions.php に貼り付けました。(ワードプレス 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');
?>
于 2013-10-21T16:51:15.007 に答える
1

$_GETWordpress では、この情報をまたはで渡す必要はありません$_POST。Wordpress は、これらすべてを利用できるようにします。

プラグインを使用したくないというあなたの希望は理解できますが、Wordpress SEO や公式の Facebook のようなプラグインを追加して、あなたの生活をずっと楽にしてくれるものもあります。そうでない場合は、単純なものを見つけて分解し、何をしているかを確認してください。

本当に独自のロールを作成したい場合は、テンプレート タグを使用してタイトルを設定する必要があります。the_title()関数を使用して、投稿のタイトルを取得できます。探している他のメタデータ ポイントには他にもあります。

最後の注意:og:imageファイルは 1 辺が 50 ピクセル以上である必要があります。そうしないと、Facebook に表示されません。あなたが使おうとしているようなファビコンは、ほとんどの場合小さすぎます。完全な画像仕様については、このページを参照してください。

于 2012-06-18T01:46:23.347 に答える
0

Facebookのog:urlタグを動的にするために、次のコード行を使用して解決しました。

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

{ picture: '<?php echo 'http://internetlols.com'.$_SERVER['REQUEST_URI']; ?>' },
于 2012-06-19T16:48:07.123 に答える
0

og:url&をog:title動的にするには、これを使用してみてください

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

オブジェクトを介して利用できる他のデータもあり$postます。詳細はこちらhttp://www.rlmseo.com/blog/wordpress-post-variable-quick-reference/

于 2012-06-18T12:51:39.247 に答える