
function wpmmachine_get_ads( $page = 0, $per_page = 50 ) {
    global $wpdb;
    $page = max( 1, intval( $page ) + 1 );
    $offset = ( $page - 1 ) * $per_page;
    return $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}moneymach_ads ORDER BY id DESC LIMIT %d, %d", $offset, $per_page ) );
}

function wpmmachine_get_ad( $ad_id ) {
    global $wpdb;
    return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}moneymach_ads WHERE id = %d", intval( $ad_id ) ) );
}

function wpmmachine_add_ad( $name, $type, $settings ) {
    global $wpdb;
    $now = current_time( 'mysql' );
    $wpdb->insert(
        $wpdb->prefix . 'moneymach_ads',
        array(
            'name' => $name,
            'type' => intval( $type ),
            'settings' => $settings,
            'created_at' => $now,
            'updated_at' => $now,
        ),
        array( '%s', '%d', '%s', '%s', '%s' )
    );
    return intval( $wpdb->insert_id );
}

function wpmmachine_update_ad( $ad_id, $name, $type, $settings ) {
    global $wpdb;
    return $wpdb->update(
        $wpdb->prefix . 'moneymach_ads',
        array(
            'name' => $name,
            'type' => intval( $type ),
            'settings' => $settings,
            'updated_at' => current_time( 'mysql' ),
        ),
        array( 'id' => intval( $ad_id ) ),
        array( '%s', '%d', '%s', '%s' ),
        array( '%d' )
    );
}

function wpmmachine_delete_ad( $ad_id ) {
    global $wpdb;
    return $wpdb->delete( $wpdb->prefix . 'moneymach_ads', array( 'id' => intval( $ad_id ) ), array( '%d' ) );
}

function wpmmachine_get_total_clicks() {
    global $wpdb;
    return intval( $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}moneymach_clicks" ) );
}

function wpmmachine_track_click( $monetize_id = 0, $target_url = '', $source_url = '' ) {
    global $wpdb;
    return $wpdb->insert(
        $wpdb->prefix . 'moneymach_clicks',
        array(
            'monetize_id' => intval( $monetize_id ),
            'clicked_at' => current_time( 'mysql' ),
            'target_url' => $target_url,
            'source_url' => $source_url,
        ),
        array( '%d', '%s', '%s', '%s' )
    );
}
{"id":33,"count":499,"description":"Na categoria <strong data-start=\"182\" data-end=\"219\">FAQ \u2013 Beb\u00ea Reborn Silicone S\u00f3lido<\/strong>, voc\u00ea encontra respostas para as principais d\u00favidas sobre esse tipo de boneco hiper-realista. Aqui esclarecemos quest\u00f5es como: qual a diferen\u00e7a do silicone s\u00f3lido para outros materiais, como cuidar do beb\u00ea reborn, quais os cuidados na hora da compra, como identificar um produto de qualidade, al\u00e9m de informa\u00e7\u00f5es sobre pre\u00e7o, manuten\u00e7\u00e3o e conserva\u00e7\u00e3o. Esta se\u00e7\u00e3o foi criada para ajudar voc\u00ea a tomar decis\u00f5es seguras, entender os detalhes desse universo encantador e escolher o beb\u00ea reborn perfeito com mais seguran\u00e7a e conhecimento.","link":"https:\/\/barbaragancia.com.br\/bebereborn\/categoria\/faq\/faq-bebe-reborn-silicone-solido\/","name":"FAQ - beb\u00ea reborn silicone s\u00f3lido","slug":"faq-bebe-reborn-silicone-solido","taxonomy":"category","parent":4,"meta":[],"_links":{"self":[{"href":"https:\/\/barbaragancia.com.br\/bebereborn\/wp-json\/wp\/v2\/categories\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/barbaragancia.com.br\/bebereborn\/wp-json\/wp\/v2\/categories"}],"about":[{"href":"https:\/\/barbaragancia.com.br\/bebereborn\/wp-json\/wp\/v2\/taxonomies\/category"}],"up":[{"embeddable":true,"href":"https:\/\/barbaragancia.com.br\/bebereborn\/wp-json\/wp\/v2\/categories\/4"}],"wp:post_type":[{"href":"https:\/\/barbaragancia.com.br\/bebereborn\/wp-json\/wp\/v2\/posts?categories=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}