On this page
wp_insert_link( array $linkdata, bool $wp_error = false ): int|WP_Error
Inserts a link into the database, or updates an existing link.
Description
Runs all the necessary sanitizing, provides default values if arguments are missing, and finally saves the link.
Parameters
$linkdataarray Required-
Elements that make up the link to insert.
link_idintOptional. The ID of the existing link if updating.link_urlstringThe URL the link points to.link_namestringThe title of the link.link_imagestringOptional. A URL of an image.link_targetstringOptional. The target element for the anchor tag.link_descriptionstringOptional. A short description of the link.link_visiblestringOptional.'Y'means visible, anything else means not.link_ownerintOptional. A user ID.link_ratingintOptional. A rating for the link.link_relstringOptional. A relationship of the link to you.link_notesstringOptional. An extended description of or notes on the link.link_rssstringOptional. A URL of an associated RSS feed.link_categoryintOptional. The term ID of the link category.
If empty, uses default link category.
$wp_errorbool 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.
More Information
- Specifying the link_id value for $linkdata array will update any link that exists with that ID. If that ID does not exist, the ID will be disregarded and a new link will be created.
- You can specify as much as you’d like within the $linkdata array. Only link_name and link_url must be specified for the link to be successfully saved.
Source
File: wp-admin/includes/bookmark.php. View all references
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;
}
Hooks
- do_action( 'add_link',
int $link_id ) -
Fires after a link was added to the database.
- do_action( 'edit_link',
int $link_id ) -
Fires after a link was updated in the database.
Related
Uses
| Uses | Description |
|---|---|
| wp_set_link_cats() wp-admin/includes/bookmark.php | Update link with the specified link categories. |
| sanitize_bookmark() wp-includes/bookmark.php | Sanitizes all bookmark fields. |
| clean_bookmark_cache() wp-includes/bookmark.php | Deletes the bookmark cache. |
| wpdb::update() wp-includes/class-wpdb.php | Updates a row in the table. |
| wpdb::insert() wp-includes/class-wpdb.php | Inserts a row into the table. |
| __() wp-includes/l10n.php | Retrieves the translation of $text. |
| wp_unslash() wp-includes/formatting.php | Removes slashes from a string or recursively removes slashes from strings within an array. |
| wp_parse_args() wp-includes/functions.php | Merges user defined arguments into defaults array. |
| do_action() wp-includes/plugin.php | Calls the callback functions that have been added to an action hook. |
| get_option() wp-includes/option.php | Retrieves an option value based on an option name. |
| get_current_user_id() wp-includes/user.php | Gets the current user’s ID. |
| WP_Error::__construct() wp-includes/class-wp-error.php | Initializes the error. |
Used By
| Used By | Description |
|---|---|
| wp_update_link() wp-admin/includes/bookmark.php | Updates a link in the database. |
| edit_link() wp-admin/includes/bookmark.php | Updates or inserts a link using values provided in $_POST. |
Changelog
| Version | Description |
|---|---|
| 2.0.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wp_insert_link