如何做简单的添加来增加我的WordPress帖子的收藏夹数

时间:2013-04-16 作者:gurung

我的函数中有一个代码。php,它让我计算出一篇文章有多少收藏夹。

function wpfp_get_current_count() {
global $wpdb;
$current_post = get_the_ID();
$query = "SELECT post_id, meta_value, post_status FROM $wpdb->postmeta";
$query .= " LEFT JOIN $wpdb->posts ON post_id=$wpdb->posts.ID";
$query .= " WHERE post_status=\'publish\' AND meta_key=\'wpfp_favorites\' AND post_id = \'".$current_post."\'";
$results = $wpdb->get_results($query);
if ($results) {
    foreach ($results as $o):
        echo $o->meta_value;
    endforeach;
}else {echo( \'0\' );}}
我使用下面的代码来实现计数,效果很好。

<?php echo \'TOTAL FAVORITES: \' .wpfp_get_current_count(); ?>
现在,我想在默认情况下添加300个收藏夹。因此,如果我的实际收藏夹是33,那么收藏夹总数将变为333。我想我需要学习一些基本的php加法。如果可能,请建议我修改代码。我尝试了下面的代码,但没有添加。老实说,我之前问过这个问题here 在wordpress上。org frorum,但无法获得答复。请帮忙。

2 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

只需在显示计数时添加300即可,如下代码所示:

<?php echo \'TOTAL POST VIEWS: \' .(intval(wpfp_get_current_count()) + 300); ?>
而不是重复函数中的值返回它,如以下代码所示:

function wpfp_get_current_count() {
global $wpdb;
$current_post = get_the_ID();
$query = "SELECT post_id, meta_value, post_status FROM $wpdb->postmeta";
$query .= " LEFT JOIN $wpdb->posts ON post_id=$wpdb->posts.ID";
$query .= " WHERE post_status=\'publish\' AND meta_key=\'wpfp_favorites\' AND post_id = \'".$current_post."\'";
$results = $wpdb->get_results($query);
if ($results) {
foreach ($results as $o):
    return $o->meta_value;
endforeach;
}else { return 0;}}
有关intval()函数的更多信息,请参阅this page.

SO网友:t31os

WPDB类有一个专门设计用于从查询返回一个值的函数,$wpdb->get_var() 返回单个值,如果没有结果,则返回null。

我将为这个函数提供一个可选的代码示例,这样您就可以看到它是以另一种方式实现的。

function wpfp_get_count( $id = false ) {

    global $wpdb;

    if( !$id )
        $id = get_the_ID();

    $favorite_count = $wpdb->get_var( $wpdb->prepare( "
        SELECT CAST(COALESCE(pm.meta_value,0) AS UNSIGNED) 
        FROM {$wpdb->postmeta} pm 
            LEFT JOIN {$wpdb->posts} p 
            ON pm.post_id = p.ID 
        WHERE p.post_status = \'publish\' 
        AND pm.meta_key = \'wpfp_favorites\' 
        AND p.post_id = %d 
        LIMIT 1
    ", $id ) );

    if( !$favorite_count )
        return 300;

    return $favorite_count + 300;
}
我们将元值强制转换为查询内部的整数,并处理从连接返回的空值(例如,如果没有要连接的记录)。

不知道为什么要向结果中添加300,但这正是您所要求的,所以我只是将其直接放入函数中(如果您想根据调用位置添加不同的数量,它也可以是函数中的第二个参数)。

可以找到有关WPDB类的更多信息here.

Example usage:

<?php printf( \'TOTAL FAVORITES: %d\', wpfp_get_count() ); ?>
或者如果你想传递身份证。。

<?php printf( \'TOTAL FAVORITES: %d\', wpfp_get_count( $var_with_id ) ); ?>
希望这有帮助。

结束

相关推荐

在自定义子菜单页面中获取不同的POST状态+COUNT,就像edit.php中一样

我正在尝试创建一个子菜单页,用于重新排序帖子/页面。现在,我正在尝试包括显示不同帖子状态的列表,例如:All (5) | Published (4) | Draft (1)我在编辑中翻找。php并发现它可以像这样拉列表:$wp_list_table->views(); 这让我找到了wp类列表。我在php中发现了以下内容:function views() { $screen = get_current_screen(); $views = $this->