Здравствуйте. Мне нужна помощь в решении одной задачи. Есть такой плагин для пакетной загрузки фотографий woocommerce-photography. Нужно сделать так, чтобы при загрузке фотографий создавались товары в заголовке которых было написано оригинальное имя файла, а не как сейчас «Photography #... from…» Я нашёл PHP файл в котором находятся функции изменения заголовка. Код (Text): /** * Batch upload. * * @return string */ public function batch_upload() { ob_start(); global $wpdb; check_ajax_referer( 'wc_photography_batch_upload_nonce', 'security' ); $image_id = absint( $_POST['image_id'] ); $sku = ''; $collections = array(); // Get the collections. if ( isset( $_POST['collections'] ) ) { if ( is_array( $_POST['collections'] ) ) { $collections = array_map( 'absint', $_POST['collections'] ); } elseif ( '' != $_POST['collections'] ) { $_collections = explode( ',', $_POST['collections'] ); $_collections = array_map( 'absint', $_collections ); foreach ( $_collections as $collection_id ) { $collection = get_term( $collection_id, 'images_collections' ); $collections[ $collection_id ] = $collection->name; } } } $image_metadata = wp_get_attachment_metadata( $image_id ); if ( ! empty( $image_metadata['image_meta']['title'] ) ) { $title = $image_metadata['image_meta']['title']; } elseif ( ! empty( $collections ) ) { $first_collection = current( $collections ); /* translators: 1: image id 2: first collection name */ $title = sprintf( __( 'Photography #%1$d from %2$s', 'woocommerce-photography' ), $image_id, $first_collection ); } else { /* translators: 1: image id */ $title = sprintf( __( 'Photography #%d', 'woocommerce-photography' ), $image_id ); } $args = array( 'post_title' => $title, 'post_status' => 'publish', 'post_type' => 'product', 'post_author' => get_current_user_id(), ); if ( ! empty( $image_metadata['image_meta']['caption'] ) ) { $args['post_content'] = $image_metadata['image_meta']['caption']; $args['post_excerpt'] = $image_metadata['image_meta']['caption']; } $id = wp_insert_post( $args, true ); if ( is_wp_error( $id ) ) { wp_delete_attachment( $image_id, true ); wp_send_json_error( $id->get_error_message() ); } $default_term = absint( get_option( 'default_product_cat', 0 ) ); if ( $default_term ) { wp_set_post_terms( $id, array( $default_term ), 'product_cat', true ); } // Save the thumbnail and update the attachment. set_post_thumbnail( $id, $image_id ); $wpdb->update( $wpdb->posts, array( 'post_parent' => $id ), array( 'ID' => $image_id ), array( '%d' ), array( '%d' ) ); update_post_meta( $image_id, '_is_photography_attachment', true ); // Set the product type. wp_set_object_terms( $id, 'photography', 'product_type' ); // Sku. if ( isset( $_POST['sku_pattern'] ) && '' != $_POST['sku_pattern'] ) { $sku_pattern = $wpdb->esc_like( $_POST['sku_pattern'] ); $last_sku = $wpdb->get_var( $wpdb->prepare( "SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = '_sku' AND meta_value LIKE %s ORDER BY post_id DESC LIMIT 1", '%' . $sku_pattern . '%' ) ); $_sku = absint( str_replace( $sku_pattern, '', $last_sku ) ); $_sku++; $sku = $sku_pattern . $_sku; add_post_meta( $id, '_sku', $sku ); } // Price. $regular_price = isset( $_POST['price'] ) ? wc_format_decimal( $_POST['price'] ) : 0; add_post_meta( $id, '_regular_price', $regular_price ); add_post_meta( $id, '_sale_price', '' ); add_post_meta( $id, '_sale_price_dates_from', '' ); add_post_meta( $id, '_sale_price_dates_to', '' ); add_post_meta( $id, '_price', $regular_price ); // Set the images_collections taxonomy. if ( ! empty( $collections ) ) { $_collections = array_keys( $collections ); wp_set_object_terms( $id, $_collections, 'images_collections' ); } // Default options. add_post_meta( $id, '_visibility', 'visible' ); add_post_meta( $id, '_stock_status', 'instock' ); add_post_meta( $id, 'total_sales', 0 ); add_post_meta( $id, '_downloadable', 'no' ); add_post_meta( $id, '_virtual', 'no' ); add_post_meta( $id, '_featured', 'no' ); add_post_meta( $id, '_manage_stock', 'yes' ); add_post_meta( $id, '_backorders', 'no' ); add_post_meta( $id, '_stock', '1' ); do_action( 'wc_photography_batch_upload', $id, $image_id, $sku, $regular_price, $collections ); $response = apply_filters( 'wc_photography_batch_upload_response', array( 'id' => $id, 'image_id' => $image_id, 'thumbnail' => wp_get_attachment_thumb_url( $image_id ), 'collections_ids' => implode( ',', array_keys( $collections ) ), 'collections' => $collections, 'price' => $regular_price, 'sku' => $sku, ) ); wp_send_json( $response ); } /** * Delete image. * * @return string */ public function delete_image() { check_ajax_referer( 'wc_photography_delete_image_nonce', 'security' ); $id = absint( $_POST['id'] ); $image_id = get_post_thumbnail_id( $id ); wp_delete_post( $id, true ); wp_delete_attachment( $image_id, true ); } Мой уровень в PHP чуть выше нуля, поэтому не знаю получилось ли донести основную мысль. Заранее спасибо.
В документации, к сожалению, нет такой информации, поскольку плагин задуман для малых объемов продаж фотографий. --- Добавлено --- Я понял что это тут : Код (Text): * translators: 1: image id */ $title = sprintf( __( 'Photography #%d', 'woocommerce-photography' ), $image_id ); только какую функцию надо вписать, чтобы вместо id выдавалось имя файла?
попробуте тупо вместо PHP: $title = sprintf( __( 'Photography #%d', 'woocommerce-photography' ), $image_id ); вставить это PHP: $title = $image_metadata['image_meta']['title'];
Это третий. --- Добавлено --- @Artur_hopf, если бы метадата тайттл была, сработало бы первое условие.