检查POST ID是否存在于只更新而不是插入新行的表中

时间:2012-10-11 作者:pixelngrain

我正在尝试为我的广告添加简单的视图计数器,下面的代码似乎一切都很好,但只是每次在“更新”帖子上插入新行。如果post id存在,则不应在该表中添加或修改任何内容,只需忽略,以便视图计数器将使用同一行,而不是

用于在发布或更新时插入行的函数

function get_publishing_id($post_id) {
    global $wpdb;

    $post= get_post($post_id);
    if ($post->post_type == \'post\'
      && $post->post_status == \'publish\') {

        if(empty ($counter)) {

            $counter = 1;

            $wpdb->insert( 
                $wpdb->prefix . \'advert_views\', 
                array( 
                    \'postid\' => $post->ID,
                    \'view_count\' => $counter,
                ),
                array(
                    \'%d\',
                    \'%d\'
                )
            );          
        }

    } // end if
} // end function
add_action(\'save_post\',\'get_publishing_id\');
用于在视图上更新表的函数

function update_counter($post_id){

    global $wpdb;

    $query = "SELECT view_count FROM ".$wpdb->prefix."advert_views WHERE postid = $post_id";

    $query_run = mysql_query($query);

    if(mysql_num_rows($query_run) > 0) {

        $count = mysql_result($query_run, 0, \'view_count\' );

        $count_inc = $count + 1;

        $query_update = "UPDATE ".$wpdb->prefix."advert_views SET view_count = $count_inc WHERE postid = $post_id";
        @$query_update_run = mysql_query($query_update);        
    }

}
还有一件事我想知道function udaate_counter() 我需要@$query_update_run = mysql_query($query_update); 或者可以使用其他方式?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

为什么要为此使用自定义表?消除整体save_post 功能和用途get_post_metaupdate_post_meta 检查/增加视图计数。这正是post元数据的用途。

结束

相关推荐

PUBLISH_POST操作无效

我正在开发一个小插件,当一本新杂志出版时,它会向用户发送电子邮件。我在主题功能上写了一个帖子类型名称“magazine”。php。我还为电子邮件订阅写了一个插件。代码:function newsletter_sendEmails($post_id) { $post = get_post($post_id); if ($post->post_type == \'magazine\') { mail( \"dor@