wp_insert_link() – Inserts/updates links into/in the database.

You appear to be a bot. Output may be restricted

Description

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.

Usage

$int|WP_Error = wp_insert_link( $linkdata, $wp_error );

Parameters

$linkdata
( array ) required – { Elements that make up the link to insert.
$link_id
( int ) required – Optional. The ID of the existing link if updating.
$link_url
( string ) required – The URL the link points to.
$link_name
( string ) required – The title of the link.
$link_image
( string ) required – Optional. A URL of an image.
$link_target
( string ) required – Optional. The target element for the anchor tag.
$link_description
( string ) required – Optional. A short description of the link.
$link_visible
( string ) required – Optional. 'Y' means visible, anything else means not.
$link_owner
( int ) required – Optional. A user ID.
$link_rating
( int ) required – Optional. A rating for the link.
$link_rel
( string ) required – Optional. A relationship of the link to you.
$link_notes
( string ) required – Optional. An extended description of or notes on the link.
$link_rss
( string ) required – Optional. A URL of an associated RSS feed.
$link_category
( int ) required – Optional. The term ID of the link category. If empty, uses default link category. }
$wp_error
( bool ) optional – Optional. Whether to return a WP_Error object on failure. Default false.

Returns

int|WP_Error Value 0 or WP_Error on failure. The link ID on success.

Source

File name: wordpress/wp-admin/includes/bookmark.php
Lines:

1 to 94 of 94
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;
}
 

 View on GitHub View on Trac