- if ( $id = url_to_postid($url) ) {
- $post = get_post($id);
- if ( 'attachment' == $post->post_type )
- return true;
- }
- return false;
-}
-
-/**
- * Insert an attachment.
- *
- * If you set the 'ID' in the $object parameter, it will mean that you are
- * updating and attempt to update the attachment. You can also set the
- * attachment name or title by setting the key 'post_name' or 'post_title'.
- *
- * You can set the dates for the attachment manually by setting the 'post_date'
- * and 'post_date_gmt' keys' values.
- *
- * By default, the comments will use the default settings for whether the
- * comments are allowed. You can close them manually or keep them open by
- * setting the value for the 'comment_status' key.
- *
- * The $object parameter can have the following:
- * 'post_status' - Default is 'draft'. Can not be overridden, set the same as parent post.
- * 'post_type' - Default is 'post', will be set to attachment. Can not override.
- * 'post_author' - Default is current user ID. The ID of the user, who added the attachment.
- * 'ping_status' - Default is the value in default ping status option. Whether the attachment
- * can accept pings.
- * 'post_parent' - Default is 0. Can use $parent parameter or set this for the post it belongs
- * to, if any.
- * 'menu_order' - Default is 0. The order it is displayed.
- * 'to_ping' - Whether to ping.
- * 'pinged' - Default is empty string.
- * 'post_password' - Default is empty string. The password to access the attachment.
- * 'guid' - Global Unique ID for referencing the attachment.
- * 'post_content_filtered' - Attachment post content filtered.
- * 'post_excerpt' - Attachment excerpt.
- *
- * @since 2.0.0
- * @uses $wpdb
- * @uses do_action() Calls 'edit_attachment' on $post_ID if this is an update.
- * @uses do_action() Calls 'add_attachment' on $post_ID if this is not an update.
- *
- * @param string|array $object Arguments to override defaults.
- * @param string $file Optional filename.
- * @param int $parent Parent post ID.
- * @return int Attachment ID.
- */
-function wp_insert_attachment($object, $file = false, $parent = 0) {
- global $wpdb;
-
- $user_id = get_current_user_id();
-
- $defaults = array('post_status' => 'inherit', 'post_type' => 'post', 'post_author' => $user_id,
- 'ping_status' => get_option('default_ping_status'), 'post_parent' => 0, 'post_title' => '',
- 'menu_order' => 0, 'to_ping' => '', 'pinged' => '', 'post_password' => '', 'post_content' => '',
- 'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0, 'context' => '');
-
- $object = wp_parse_args($object, $defaults);
- if ( !empty($parent) )
- $object['post_parent'] = $parent;
-
- unset( $object[ 'filter' ] );
-
- $object = sanitize_post($object, 'db');
-
- // export array as variables
- extract($object, EXTR_SKIP);
-
- if ( empty($post_author) )
- $post_author = $user_id;
-
- $post_type = 'attachment';
-
- if ( ! in_array( $post_status, array( 'inherit', 'private' ) ) )
- $post_status = 'inherit';
-
- if ( !empty($post_category) )
- $post_category = array_filter($post_category); // Filter out empty terms
-
- // Make sure we set a valid category.
- if ( empty($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
- $post_category = array();
- }
-
- // Are we updating or creating?
- if ( !empty($ID) ) {
- $update = true;
- $post_ID = (int) $ID;
- } else {
- $update = false;
- $post_ID = 0;
- }
-
- // Create a valid post name.
- if ( empty($post_name) )
- $post_name = sanitize_title($post_title);
- else
- $post_name = sanitize_title($post_name);
-
- // expected_slashed ($post_name)
- $post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
-
- if ( empty($post_date) )
- $post_date = current_time('mysql');
- if ( empty($post_date_gmt) )
- $post_date_gmt = current_time('mysql', 1);
-
- if ( empty($post_modified) )
- $post_modified = $post_date;
- if ( empty($post_modified_gmt) )
- $post_modified_gmt = $post_date_gmt;
-
- if ( empty($comment_status) ) {
- if ( $update )
- $comment_status = 'closed';
- else
- $comment_status = get_option('default_comment_status');
- }
- if ( empty($ping_status) )
- $ping_status = get_option('default_ping_status');
-
- if ( isset($to_ping) )
- $to_ping = preg_replace('|\s+|', "\n", $to_ping);
- else
- $to_ping = '';
-
- if ( isset($post_parent) )
- $post_parent = (int) $post_parent;
- else
- $post_parent = 0;
-
- if ( isset($menu_order) )
- $menu_order = (int) $menu_order;
- else
- $menu_order = 0;
-
- if ( !isset($post_password) )
- $post_password = '';
-
- if ( ! isset($pinged) )
- $pinged = '';
-
- // expected_slashed (everything!)
- $data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' ) );
- $data = wp_unslash( $data );
-
- if ( $update ) {
- $wpdb->update( $wpdb->posts, $data, array( 'ID' => $post_ID ) );
- } else {
- // If there is a suggested ID, use it if not already present
- if ( !empty($import_id) ) {
- $import_id = (int) $import_id;
- if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
- $data['ID'] = $import_id;
- }
- }
-
- $wpdb->insert( $wpdb->posts, $data );
- $post_ID = (int) $wpdb->insert_id;
- }
-
- if ( empty($post_name) ) {
- $post_name = sanitize_title($post_title, $post_ID);
- $wpdb->update( $wpdb->posts, compact("post_name"), array( 'ID' => $post_ID ) );
- }
-
- if ( is_object_in_taxonomy($post_type, 'category') )
- wp_set_post_categories( $post_ID, $post_category );
-
- if ( isset( $tags_input ) && is_object_in_taxonomy($post_type, 'post_tag') )
- wp_set_post_tags( $post_ID, $tags_input );
-
- // support for all custom taxonomies
- if ( !empty($tax_input) ) {
- foreach ( $tax_input as $taxonomy => $tags ) {
- $taxonomy_obj = get_taxonomy($taxonomy);
- if ( is_array($tags) ) // array = hierarchical, string = non-hierarchical.
- $tags = array_filter($tags);
- if ( current_user_can($taxonomy_obj->cap->assign_terms) )
- wp_set_post_terms( $post_ID, $tags, $taxonomy );
- }