wp_insert_link

The timeline below displays how wordpress function wp_insert_link has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Inserts a link into the database, or updates an existing link.
 *
 * Runs all the necessary sanitizing, provides default values if arguments are missing,
 * and finally saves the link.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param array $linkdata {
 *     Elements that make up the link to insert.
 *
 *     @type int    $link_id          Optional. The ID of the existing link if updating.
 *     @type string $link_url         The URL the link points to.
 *     @type string $link_name        The title of the link.
 *     @type string $link_image       Optional. A URL of an image.
 *     @type string $link_target      Optional. The target element for the anchor tag.
 *     @type string $link_description Optional. A short description of the link.
 *     @type string $link_visible     Optional. 'Y' means visible, anything else means not.
 *     @type int    $link_owner       Optional. A user ID.
 *     @type int    $link_rating      Optional. A rating for the link.
 *     @type string $link_rel         Optional. A relationship of the link to you.
 *     @type string $link_notes       Optional. An extended description of or notes on the link.
 *     @type string $link_rss         Optional. A URL of an associated RSS feed.
 *     @type int    $link_category    Optional. The term ID of the link category.
 *                                    If empty, uses default link category.
 * }
 * @param bool  $wp_error Optional. Whether to return a WP_Error object on failure. Default false.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $parsed_args = wp_parse_args($linkdata, $defaults);
    $parsed_args = wp_unslash(sanitize_bookmark($parsed_args, 'db'));
    $link_id = $parsed_args['link_id'];
    $link_name = $parsed_args['link_name'];
    $link_url = $parsed_args['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if ('' === trim($link_name)) {
        if ('' !== trim($link_url)) {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if ('' === trim($link_url)) {
        return 0;
    }
    $link_rating = (!empty($parsed_args['link_rating'])) ? $parsed_args['link_rating'] : 0;
    $link_image = (!empty($parsed_args['link_image'])) ? $parsed_args['link_image'] : '';
    $link_target = (!empty($parsed_args['link_target'])) ? $parsed_args['link_target'] : '';
    $link_visible = (!empty($parsed_args['link_visible'])) ? $parsed_args['link_visible'] : 'Y';
    $link_owner = (!empty($parsed_args['link_owner'])) ? $parsed_args['link_owner'] : get_current_user_id();
    $link_notes = (!empty($parsed_args['link_notes'])) ? $parsed_args['link_notes'] : '';
    $link_description = (!empty($parsed_args['link_description'])) ? $parsed_args['link_description'] : '';
    $link_rss = (!empty($parsed_args['link_rss'])) ? $parsed_args['link_rss'] : '';
    $link_rel = (!empty($parsed_args['link_rel'])) ? $parsed_args['link_rel'] : '';
    $link_category = (!empty($parsed_args['link_category'])) ? $parsed_args['link_category'] : array();
    // Make sure we set a valid category.
    if (!is_array($link_category) || 0 === count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database.'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database.'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 5.6

/**
 * Inserts a link into the database, or updates an existing link.
 *
 * Runs all the necessary sanitizing, provides default values if arguments are missing,
 * and finally saves the link.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param array $linkdata {
 *     Elements that make up the link to insert.
 *
 *     @type int    $link_id          Optional. The ID of the existing link if updating.
 *     @type string $link_url         The URL the link points to.
 *     @type string $link_name        The title of the link.
 *     @type string $link_image       Optional. A URL of an image.
 *     @type string $link_target      Optional. The target element for the anchor tag.
 *     @type string $link_description Optional. A short description of the link.
 *     @type string $link_visible     Optional. 'Y' means visible, anything else means not.
 *     @type int    $link_owner       Optional. A user ID.
 *     @type int    $link_rating      Optional. A rating for the link.
 *     @type string $link_updated     Optional. When the link was last updated.
 *     @type string $link_rel         Optional. A relationship of the link to you.
 *     @type string $link_notes       Optional. An extended description of or notes on the link.
 *     @type string $link_rss         Optional. A URL of an associated RSS feed.
 *     @type int    $link_category    Optional. The term ID of the link category.
 *                                    If empty, uses default link category.
 * }
 * @param bool  $wp_error Optional. Whether to return a WP_Error object on failure. Default false.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $parsed_args = wp_parse_args($linkdata, $defaults);
    $parsed_args = wp_unslash(sanitize_bookmark($parsed_args, 'db'));
    $link_id = $parsed_args['link_id'];
    $link_name = $parsed_args['link_name'];
    $link_url = $parsed_args['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if ('' === trim($link_name)) {
        if ('' !== trim($link_url)) {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if ('' === trim($link_url)) {
        return 0;
    }
    $link_rating = (!empty($parsed_args['link_rating'])) ? $parsed_args['link_rating'] : 0;
    $link_image = (!empty($parsed_args['link_image'])) ? $parsed_args['link_image'] : '';
    $link_target = (!empty($parsed_args['link_target'])) ? $parsed_args['link_target'] : '';
    $link_visible = (!empty($parsed_args['link_visible'])) ? $parsed_args['link_visible'] : 'Y';
    $link_owner = (!empty($parsed_args['link_owner'])) ? $parsed_args['link_owner'] : get_current_user_id();
    $link_notes = (!empty($parsed_args['link_notes'])) ? $parsed_args['link_notes'] : '';
    $link_description = (!empty($parsed_args['link_description'])) ? $parsed_args['link_description'] : '';
    $link_rss = (!empty($parsed_args['link_rss'])) ? $parsed_args['link_rss'] : '';
    $link_rel = (!empty($parsed_args['link_rel'])) ? $parsed_args['link_rel'] : '';
    $link_category = (!empty($parsed_args['link_category'])) ? $parsed_args['link_category'] : array();
    // Make sure we set a valid category.
    if (!is_array($link_category) || 0 === count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database.'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database.'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 5.5

/**
 * Inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool  $wp_error Optional. Whether to return a WP_Error object on failure. Default false.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $parsed_args = wp_parse_args($linkdata, $defaults);
    $parsed_args = wp_unslash(sanitize_bookmark($parsed_args, 'db'));
    $link_id = $parsed_args['link_id'];
    $link_name = $parsed_args['link_name'];
    $link_url = $parsed_args['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if ('' === trim($link_name)) {
        if ('' !== trim($link_url)) {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if ('' === trim($link_url)) {
        return 0;
    }
    $link_rating = (!empty($parsed_args['link_rating'])) ? $parsed_args['link_rating'] : 0;
    $link_image = (!empty($parsed_args['link_image'])) ? $parsed_args['link_image'] : '';
    $link_target = (!empty($parsed_args['link_target'])) ? $parsed_args['link_target'] : '';
    $link_visible = (!empty($parsed_args['link_visible'])) ? $parsed_args['link_visible'] : 'Y';
    $link_owner = (!empty($parsed_args['link_owner'])) ? $parsed_args['link_owner'] : get_current_user_id();
    $link_notes = (!empty($parsed_args['link_notes'])) ? $parsed_args['link_notes'] : '';
    $link_description = (!empty($parsed_args['link_description'])) ? $parsed_args['link_description'] : '';
    $link_rss = (!empty($parsed_args['link_rss'])) ? $parsed_args['link_rss'] : '';
    $link_rel = (!empty($parsed_args['link_rel'])) ? $parsed_args['link_rel'] : '';
    $link_category = (!empty($parsed_args['link_category'])) ? $parsed_args['link_category'] : array();
    // Make sure we set a valid category.
    if (!is_array($link_category) || 0 === count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database.'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database.'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 5.4

/**
 * Inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool  $wp_error Optional. Whether to return a WP_Error object on failure. Default false.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $parsed_args = wp_parse_args($linkdata, $defaults);
    $parsed_args = wp_unslash(sanitize_bookmark($parsed_args, 'db'));
    $link_id = $parsed_args['link_id'];
    $link_name = $parsed_args['link_name'];
    $link_url = $parsed_args['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        if (trim($link_url) != '') {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if (trim($link_url) == '') {
        return 0;
    }
    $link_rating = (!empty($parsed_args['link_rating'])) ? $parsed_args['link_rating'] : 0;
    $link_image = (!empty($parsed_args['link_image'])) ? $parsed_args['link_image'] : '';
    $link_target = (!empty($parsed_args['link_target'])) ? $parsed_args['link_target'] : '';
    $link_visible = (!empty($parsed_args['link_visible'])) ? $parsed_args['link_visible'] : 'Y';
    $link_owner = (!empty($parsed_args['link_owner'])) ? $parsed_args['link_owner'] : get_current_user_id();
    $link_notes = (!empty($parsed_args['link_notes'])) ? $parsed_args['link_notes'] : '';
    $link_description = (!empty($parsed_args['link_description'])) ? $parsed_args['link_description'] : '';
    $link_rss = (!empty($parsed_args['link_rss'])) ? $parsed_args['link_rss'] : '';
    $link_rel = (!empty($parsed_args['link_rel'])) ? $parsed_args['link_rel'] : '';
    $link_category = (!empty($parsed_args['link_category'])) ? $parsed_args['link_category'] : array();
    // Make sure we set a valid category.
    if (!is_array($link_category) || 0 == count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 5.3

/**
 * Inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool  $wp_error Optional. Whether to return a WP_Error object on failure. Default false.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $parsed_args = wp_parse_args($linkdata, $defaults);
    $parsed_args = wp_unslash(sanitize_bookmark($parsed_args, 'db'));
    $link_id = $parsed_args['link_id'];
    $link_name = $parsed_args['link_name'];
    $link_url = $parsed_args['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        if (trim($link_url) != '') {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if (trim($link_url) == '') {
        return 0;
    }
    $link_rating = (!empty($parsed_args['link_rating'])) ? $parsed_args['link_rating'] : 0;
    $link_image = (!empty($parsed_args['link_image'])) ? $parsed_args['link_image'] : '';
    $link_target = (!empty($parsed_args['link_target'])) ? $parsed_args['link_target'] : '';
    $link_visible = (!empty($parsed_args['link_visible'])) ? $parsed_args['link_visible'] : 'Y';
    $link_owner = (!empty($parsed_args['link_owner'])) ? $parsed_args['link_owner'] : get_current_user_id();
    $link_notes = (!empty($parsed_args['link_notes'])) ? $parsed_args['link_notes'] : '';
    $link_description = (!empty($parsed_args['link_description'])) ? $parsed_args['link_description'] : '';
    $link_rss = (!empty($parsed_args['link_rss'])) ? $parsed_args['link_rss'] : '';
    $link_rel = (!empty($parsed_args['link_rel'])) ? $parsed_args['link_rel'] : '';
    $link_category = (!empty($parsed_args['link_category'])) ? $parsed_args['link_category'] : array();
    // Make sure we set a valid category.
    if (!is_array($link_category) || 0 == count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 4.4

/**
 * Inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool  $wp_error Optional. Whether to return a WP_Error object on failure. Default false.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $args = wp_parse_args($linkdata, $defaults);
    $r = wp_unslash(sanitize_bookmark($args, 'db'));
    $link_id = $r['link_id'];
    $link_name = $r['link_name'];
    $link_url = $r['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        if (trim($link_url) != '') {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if (trim($link_url) == '') {
        return 0;
    }
    $link_rating = (!empty($r['link_rating'])) ? $r['link_rating'] : 0;
    $link_image = (!empty($r['link_image'])) ? $r['link_image'] : '';
    $link_target = (!empty($r['link_target'])) ? $r['link_target'] : '';
    $link_visible = (!empty($r['link_visible'])) ? $r['link_visible'] : 'Y';
    $link_owner = (!empty($r['link_owner'])) ? $r['link_owner'] : get_current_user_id();
    $link_notes = (!empty($r['link_notes'])) ? $r['link_notes'] : '';
    $link_description = (!empty($r['link_description'])) ? $r['link_description'] : '';
    $link_rss = (!empty($r['link_rss'])) ? $r['link_rss'] : '';
    $link_rel = (!empty($r['link_rel'])) ? $r['link_rel'] : '';
    $link_category = (!empty($r['link_category'])) ? $r['link_category'] : array();
    // Make sure we set a valid category.
    if (!is_array($link_category) || 0 == count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 4.3

/**
 * This function inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool  $wp_error Optional. If true return WP_Error object on failure.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $args = wp_parse_args($linkdata, $defaults);
    $r = wp_unslash(sanitize_bookmark($args, 'db'));
    $link_id = $r['link_id'];
    $link_name = $r['link_name'];
    $link_url = $r['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        if (trim($link_url) != '') {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if (trim($link_url) == '') {
        return 0;
    }
    $link_rating = (!empty($r['link_rating'])) ? $r['link_rating'] : 0;
    $link_image = (!empty($r['link_image'])) ? $r['link_image'] : '';
    $link_target = (!empty($r['link_target'])) ? $r['link_target'] : '';
    $link_visible = (!empty($r['link_visible'])) ? $r['link_visible'] : 'Y';
    $link_owner = (!empty($r['link_owner'])) ? $r['link_owner'] : get_current_user_id();
    $link_notes = (!empty($r['link_notes'])) ? $r['link_notes'] : '';
    $link_description = (!empty($r['link_description'])) ? $r['link_description'] : '';
    $link_rss = (!empty($r['link_rss'])) ? $r['link_rss'] : '';
    $link_rel = (!empty($r['link_rel'])) ? $r['link_rel'] : '';
    $link_category = (!empty($r['link_category'])) ? $r['link_category'] : array();
    // Make sure we set a valid category
    if (!is_array($link_category) || 0 == count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 4.0

/**
 * This function inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool $wp_error Optional. If true return WP_Error object on failure.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $args = wp_parse_args($linkdata, $defaults);
    $r = wp_unslash(sanitize_bookmark($args, 'db'));
    $link_id = $r['link_id'];
    $link_name = $r['link_name'];
    $link_url = $r['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        if (trim($link_url) != '') {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if (trim($link_url) == '') {
        return 0;
    }
    $link_rating = (!empty($r['link_rating'])) ? $r['link_rating'] : 0;
    $link_image = (!empty($r['link_image'])) ? $r['link_image'] : '';
    $link_target = (!empty($r['link_target'])) ? $r['link_target'] : '';
    $link_visible = (!empty($r['link_visible'])) ? $r['link_visible'] : 'Y';
    $link_owner = (!empty($r['link_owner'])) ? $r['link_owner'] : get_current_user_id();
    $link_notes = (!empty($r['link_notes'])) ? $r['link_notes'] : '';
    $link_description = (!empty($r['link_description'])) ? $r['link_description'] : '';
    $link_rss = (!empty($r['link_rss'])) ? $r['link_rss'] : '';
    $link_rel = (!empty($r['link_rel'])) ? $r['link_rel'] : '';
    $link_category = (!empty($r['link_category'])) ? $r['link_category'] : array();
    // Make sure we set a valid category
    if (!is_array($link_category) || 0 == count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}

WordPress Version: 3.7

/**
 * This function inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool $wp_error Optional. If true return WP_Error object on failure.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $linkdata = wp_parse_args($linkdata, $defaults);
    $linkdata = sanitize_bookmark($linkdata, 'db');
    extract(wp_unslash($linkdata), EXTR_SKIP);
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        if (trim($link_url) != '') {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if (trim($link_url) == '') {
        return 0;
    }
    if (empty($link_rating)) {
        $link_rating = 0;
    }
    if (empty($link_image)) {
        $link_image = '';
    }
    if (empty($link_target)) {
        $link_target = '';
    }
    if (empty($link_visible)) {
        $link_visible = 'Y';
    }
    if (empty($link_owner)) {
        $link_owner = get_current_user_id();
    }
    if (empty($link_notes)) {
        $link_notes = '';
    }
    if (empty($link_description)) {
        $link_description = '';
    }
    if (empty($link_rss)) {
        $link_rss = '';
    }
    if (empty($link_rel)) {
        $link_rel = '';
    }
    // Make sure we set a valid category
    if (!isset($link_category) || 0 == count($link_category) || !is_array($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}