【问题标题】:Calling a FQL Subquery inside a PHP function in WordPress在 WordPress 的 PHP 函数中调用 FQL 子查询
【发布时间】:2014-07-28 04:16:20
【问题描述】:

我在 WordPress 中的 functions.php 文件中使用了以下函数,该函数用于调用指定的子查询以显示特定链接的 Facebook 总份额、喜欢、cmets 等。

function fb_echoes($type) {
global $post;
$url = get_permalink($post->ID);

$fbconfig['appid' ]  = "1427040634231404";
$fbconfig['secret']  = "49a95c1eb6f7862caa8f66b04c87318d";
include_once "facebook.php";

$facebook = new Facebook(array(
    'appId'  => $fbconfig['appid' ],
    'secret' => $fbconfig['secret'],
    'cookie' => true
));

$fql = "SELECT url, normalized_url, share_count, like_count, comment_count, total_count, commentsbox_count, comments_fbid, click_count FROM link_stat WHERE url = '".$url."' ";
$param  =   array(
    'method'    => 'fql.query',
    'query'     => $fql,
    'callback'  => ''
);
$fqlResult   =   $facebook->api($param);
return $fqlResult[0][$type];
}

为了在页面的任何位置显示 facebook cmets 的数量,我使用了以下代码:

<?php echo fb_echoes(commentsbox_count) ?>

我已经禁用了默认的 WP cmets,但是帖子和主页上的小计数图标显示了 WP cmets 的计数。我想在那里显示 FB cmets 计数。下面的代码显示了默认的 cmets 计数:

function it_get_comments($args) {
extract($args);
$tooltip = '';
$comments = get_comments_number($postid);
$label_text=__(' comments',IT_TEXTDOMAIN);
if($comments==1) $label_text=__(' comment',IT_TEXTDOMAIN);
if(empty($tooltip_hide)) $tooltip = ' info-bottom';
$out='<span class="metric' . $tooltip . '" title="'.__('Comments',IT_TEXTDOMAIN).'">';
if($comments>0 || $showifempty) {
    if($anchor_link) '<a href="#comments">';
        if($icon) $out.='<span class="icon icon-commented"></span>';
        $out.='<span class="numcount">' .$comments;
        if($label) $out.=$label_text;
        $out.='</span>';
    if($anchor_link) '</a>';
}
$out.='</span>';
return $out;
}

如何将 cmetsbox fql 子查询调用到此函数中并覆盖 WP 评论计数超过 FB cmets 计数!?

【问题讨论】:

    标签: php facebook wordpress facebook-fql


    【解决方案1】:

    get_comments_number() 函数在返回结果之前通过过滤器 get_comments_number 过滤结果,因此如果您连接到此过滤器,您将能够用 Facebook 函数的结果覆盖这些值。

    function facebook_get_comments_number( $count, $post_id ){
        return fb_echoes( 'commentsbox_count' );
    }
    add_filter( 'get_comments_number', 'facebook_get_comments_number', 10, 2 );
    

    另外,虽然您的代码可以工作,但您应该在 fb_echoes() 的参数周围使用单引号,否则 PHP 会将其视为常量,并且在其后面加上分号也是一种不错的形式:

    <?php echo fb_echoes( 'commentsbox_count' ); ?>
    

    【讨论】:

    • 好吧,这东西有效,但我想在我的帖子中显示,在标题上方曾经有一个小聊天图标,在它旁边用于显示帖子上的总 cmets。我删除了该代码并在那里调用了fb_echoes(),但它只显示了没有任何图标和样式的数字。 &lt;?php if(!$disable_comment_count) echo it_get_comments($commentsargs); ?&gt; 这用于显示 cmets 的数量和变量有:$commentsargs = array('postid' =&gt; get_the_ID(), 'label' =&gt; true, 'icon' =&gt; true, 'showifempty' =&gt; true, 'tooltip_hide' =&gt; true, 'anchor_link' =&gt; true);
    • 那么如何显示值,以便数字显示在上面问题中给出的 php 函数中描述的 html 标记内。
    • 这是特定于你的主题,所以我真的帮不上忙,但你可能只需要将它改回原来的&lt;?php if(!$disable_comment_count) echo it_get_comments($commentsargs); ?&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2014-11-21
    相关资源
    最近更新 更多