gpt4 book ai didi

php - 将 facebook、twitter 和 g+ "shares"一起计数并将它们存储在数据库中?

转载 作者:可可西里 更新时间:2023-11-01 13:50:38 27 4
gpt4 key购买 nike

我在我的 Word Press 方面工作并得到了这个想法。我不想实现“喜欢/收藏”功能来确定热门文章,而是想一起计算该文章收到的 facebook 分享、推文和 +1 的数量,一旦它们全部计算在一起,将它们存储在数据库中(根据文章) ,因此我可以通过选择分享次数、推文和 +1 最多的文章来选择热门文章。每次用户点击 facebook、twitter 或 g+ 按钮时,我还需要更新数据库。

这是否可以在 Word Press 中通过使用他们的 API 来实现?

最佳答案

这并不像看起来那么简单。

GitHub 上有一个很棒的要点,其中包含您要实现的所有 API: Get the share counts from various APIs .

您可以连接到这些服务器并使用 jQuery 和 AJAX 获取数据:

function how_many_tweets(url, post_id) {
var api_url = "http://cdn.api.twitter.com/1/urls/count.json";
var just_url = url || document.location.href;
$.ajax({
url: api_url + "?callback=?&url=" + just_url,
dataType: 'json',
success: function(data) {
var tweets_count = data.count;
// do something with it
}
});
}

function how_many_fb_shares(url, post_id) {
var api_url = "http://api.facebook.com/restserver.php";
var just_url = url || document.location.href;
$.ajax({
url: api_url + "?method=links.getStats&format=json&urls=" + just_url,
dataType: 'json',
success: function(data) {
var shares_count = data[0].total_count;
// do something with it
}
});
};

function how_many_google_pluses(url, api_key, post_id) {
var api_url = "https://clients6.google.com/rpc?key=" + api_key;
var just_url = url || document.location.href;
$.ajax({
url: api_url,
dataType: 'json',
contentType: 'application/json',
type: 'POST',
processData: false,
data: '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' + just_url + '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]',
success: function(data) {
var google_pluses = data.result.metadata.globalCounts.count;
// do something with it
}
})
}

然后,您可以将 //do something with it 行替换为对您博客的另一个 AJAX 请求。 您将需要编写一个插件来处理此请求并将数据保存在$wpdb 中。该插件相对简单:

<?php

/*
Plugin Name: Save Share Count Request Plugin
Plugin URI: http://yourdomain.com/
Description: This plugin catches 'save share count' requests and updates the database.
Version: 1.0

*/

// check if request is a 'save share count' request
// i'm using sscrp_ prefix just not to redefine another function
// sscrp_ means SaveShareCountRequestPlugin_
function sscrp_is_save_share_count_request() {
if(isset($_GET['_save_share_count_request'])) return true;
else return false;
}

// save the count in database
function sscrp_save_share_count_in_wpdb($type, $count, $post_id) {

// $count is your new count for the post with $post_id
// $type is your social media type (can be e.g.: 'twitter', 'facebook', 'googleplus')
// $post_id is post's id

global $wpdb;

// create a $wpdb query and save $post_id's $count for $type.
// i will not show how to do it here, you have to work a little bit

// return true or false, depending on query success.

return false;
}

// catches the request, saves count and responds
function sscrp_catch_save_share_count_request() {
if(sscrp_is_save_share_count_request()) {
if(isset($_GET['type'])) {
$social_media_type = $_GET['type'];
$new_count = $_GET['value'];
$post_id = $_GET['post_id'];
if(sscrp_save_share_count_in_wpdb($social_media_type, $new_count, $post_id)) {
header(sprintf('Content-type: %s', 'application/json'));
die(json_encode(array("sscrp_saved"=>true)));
} else {
header(sprintf('Content-type: %s', 'application/json'));
die(json_encode(array("sscrp_saved"=>false)));
}
} else {
header(sprintf('Content-type: %s', 'application/json'));
die(json_encode(array("sscrp_saved"=>false)));
}
}
}

// catch the save request just after wp is loaded
add_action('wp_loaded', 'sscrp_catch_save_share_count_request');

?>

当你有你的插件时,我们可以在你的 JavaScript 文件中编辑 //do something with it 行:

  1. 对于 how_many_tweets() 它将是:

    $.ajax({
    url: "http://yourdomain.com/path_to_your_wp_installation/?_save_share_count_request=1&type=twitter&value=" + tweets_count + "&post_id=" + post_id,
    dataType: 'json',
    success: function(data) {
    var saved = data.sscrp_saved;
    if(saved) {
    // done!
    } else {
    // oh crap, an error occured
    }
    }
    });
  2. 对于 how_many_fb_shares(),复制/粘贴 how_many_tweets() 中的代码,然后更改:

    ...
    url: "... &type=facebook ...
    ...
  3. 对于 how_many_google_pluses() 做与 facebook 相同的事情:

    ...
    url: "... &type=googleplus ...
    ...

然后,您必须以某种方式使用您已写入$wpdb 的$type$count 来过滤您的帖子


我得走了。我为您提供的不仅仅是有关连接到 Facebook、Twitter 和 Google 的 API 的简单信息。我希望你能利用它并实现你想要实现的目标。

关于php - 将 facebook、twitter 和 g+ "shares"一起计数并将它们存储在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15136106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com