Inventory_Presser_WP_All_Import
On This Page
Description Description
Helps vehicle imports using WP All Import Pro by detecting piped options and saving them as individual options.
Source Source
File: includes/integrations/class-wp-all-import.php
class Inventory_Presser_WP_All_Import { /** * Adds hooks. * * @return void */ public function add_hooks() { // Help save options in a multi-valued meta field. add_action( 'pmxi_update_post_meta', array( $this, 'detect_delimited_options' ), 10, 3 ); // Mark imported vehicles as "For Sale" in the Availability taxonomy. add_action( 'pmxi_saved_post', array( $this, 'set_availability_for_sale' ), 10, 1 ); // Number photos when they are uploaded. add_action( 'pmxi_gallery_image', array( $this, 'number_photos' ), 10, 2 ); add_action( 'pmxi_before_post_import', array( $this, 'do_not_renumber_on_save' ) ); } /** * Disable a feature that renumbers photos during vehicle saves. * * @return void */ public function do_not_renumber_on_save() { remove_action( 'save_post_' . INVP::POST_TYPE, array( 'Inventory_Presser_Photo_Numberer', 'renumber_photos' ), 10, 1 ); } /** * If the value being saved to the meta key inventory_presser_options_array * contains pipe-delimited or comma-delimited values, split the string and * add each option individually. * * @param mixed $post_id ID of the post whose meta was updated. * @param mixed $meta_key The meta key that has been updated. * @param mixed $meta_value The new meta value. * @return void */ public function detect_delimited_options( $post_id, $meta_key, $meta_value ) { // Is it a vehicle? if ( ! class_exists( 'INVP' ) || INVP::POST_TYPE !== get_post_type( $post_id ) ) { // No. return; } if ( apply_filters( 'invp_prefix_meta_key', 'options_array' ) !== $meta_key ) { return; } if ( empty( $meta_value ) ) { return; } // Are there lots of commas or pipes in the value? $delimiters = array( '|' => substr_count( $meta_value ?? '', '|' ), ',' => substr_count( $meta_value ?? '', ',' ), ';' => substr_count( $meta_value ?? '', ';' ), ); $delimiters = array_filter( $delimiters, function ( $value ) { return $value > 1; } ); if ( empty( $delimiters ) ) { // No. return; } $found_delimiter = array_search( max( $delimiters ), $delimiters, true ); if ( false === $found_delimiter ) { // No. return; } // Repeating delimiter found. Erase the current value. delete_post_meta( $post_id, $meta_key ); // Add each option individually, options_array is a multi-meta value. foreach ( array_filter( explode( $found_delimiter, $meta_value ) ) as $option ) { if ( '' === trim( $option ) ) { continue; } add_post_meta( $post_id, $meta_key, trim( $option ) ); } } /** * Add a sequence number and other meta to vehicle photos. * * @param int $post_id The post ID that's being imported. * @param int $attachment_id The attachment ID. * @return void */ public function number_photos( $post_id, $attachment_id ) { // The maybe_number_photo() method checks if the parent is a vehicle. Inventory_Presser_Photo_Numberer::maybe_number_photo( $attachment_id ); } /** * Not all feed imports have a for sale/sold bit that matches up nicely with * our Availability taxonomy. Mark vehicles as for sale if no relationship * exists in the taxonomy. * * @param int $post_id The inserted or updated post ID. * @return void */ public function set_availability_for_sale( $post_id ) { // Is it a vehicle? if ( ! class_exists( 'INVP' ) || INVP::POST_TYPE !== get_post_type( $post_id ) ) { // No. return; } $taxonomy = 'availability'; if ( ! empty( wp_get_object_terms( $post_id, $taxonomy ) ) ) { // There is already a relationship. return; } // Do we have a For Sale term? $term = get_term_by( 'slug', 'for-sale', $taxonomy ); if ( $term ) { // Yes, create the relationship. wp_set_object_terms( $post_id, $term->term_id, $taxonomy ); } } }
Expand full source codeCollapse full source codeView on Github
Methods Methods
- add_hooks — Adds hooks.
- detect_delimited_options — If the value being saved to the meta key inventory_presser_options_array contains pipe-delimited or comma-delimited values, split the string and add each option individually.
- do_not_renumber_on_save — Disable a feature that renumbers photos during vehicle saves.
- number_photos — Add a sequence number and other meta to vehicle photos.
- set_availability_for_sale — Not all feed imports have a for sale/sold bit that matches up nicely with our Availability taxonomy. Mark vehicles as for sale if no relationship exists in the taxonomy.