Forum Replies Created

Viewing 15 replies - 1 through 15 (of 36 total)
  • Thread Starter mitys

    (@mitys)

    Sorry, I made a mistake, this issue is related to an another plugin so if you can delete this ticket, it would be great, thank you !

    @sachinagrawal I have the same request, I’ve already sent an email but haven’t got an answer yet.

    Thread Starter mitys

    (@mitys)

    I found the solution finally, I customised the function with a filter, I'll post it here in case of someone else need it: 

    add_filter('woocommerce_product_pre_search_products', 'custom_woocommerce_product_pre_search_products', 10, 6);

    function custom_woocommerce_product_pre_search_products( $custom_query=false, $term, $type, $include_variations, $all_statuses, $limit) {

        global $wpdb;

       // $custom_results = apply_filters( 'woocommerce_product_pre_search_products', false, $term, $type, $include_variations, $all_statuses, $limit );


        /*if ( is_array( $custom_results ) ) {

            return $custom_results;

        }

    */

        $post_types   = $include_variations ? array( 'product', 'product_variation' ) : array( 'product' );

        $join_query   = '';

        $type_where   = '';

        $status_where = '';

        $limit_query  = '';

        // When searching variations we should include the parent's meta table for use in searches.

        if ( $include_variations ) {

            $join_query = " LEFT JOIN {$wpdb->wc_product_meta_lookup} parent_wc_product_meta_lookup

             ON posts.post_type = 'product_variation' AND parent_wc_product_meta_lookup.product_id = posts.post_parent ";

        }

        /**

         * Hook woocommerce_search_products_post_statuses.

         *

         * @since 3.7.0

         * @param array $post_statuses List of post statuses.

         */

        $post_statuses = apply_filters(

            'woocommerce_search_products_post_statuses',

            current_user_can( 'edit_private_products' ) ? array( 'private', 'publish' ) : array( 'publish' )

        );

        // See if search term contains OR keywords.

        if ( stristr( $term, ' or ' ) ) {

            $term_groups = preg_split( '/\s+or\s+/i', $term );

        } else {

            $term_groups = array( $term );

        }

        $search_where   = '';

        $search_queries = array();

        foreach ( $term_groups as $term_group ) {

            // Parse search terms.

            if ( preg_match_all( '/".*?("|$)|((?<=[\t ",+])|^)[^\t ",+]+/', $term_group, $matches ) ) {

                if ($custom_WC_Product_Data_Store_CPT) {

                    $search_terms = $custom_WC_Product_Data_Store_CPT->get_public_valid_search_terms($matches[0]);

                } else {

                    $search_terms = array($term_group);

                }

                $count        = count( $search_terms );

                // if the search string has only short terms or stopwords, or is 10+ terms long, match it as sentence.

                if ( 9 < $count || 0 === $count ) {

                    $search_terms = array( $term_group );

                }

            } else {

                $search_terms = array( $term_group );

            }

            $term_group_query = '';

            $searchand        = '';

            foreach ( $search_terms as $search_term ) {

                $like = '%' . $wpdb->esc_like( $search_term ) . '%';

                // Variations should also search the parent's meta table for fallback fields.

                if ( $include_variations ) {

                    $variation_query = $wpdb->prepare( " OR ( wc_product_meta_lookup.sku = '' AND parent_wc_product_meta_lookup.sku LIKE %s ) ", $like );

                } else {

                    $variation_query = '';

                }

              $term_group_query .= $wpdb->prepare( " {$searchand} ( ( posts.post_title LIKE %s) OR ( wc_product_meta_lookup.sku LIKE %s ) $variation_query)", $like, $like ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared

              $searchand         = ' AND ';

            }

            if ( $term_group_query ) {

                $search_queries[] = $term_group_query;

            }

        }

        if ( ! empty( $search_queries ) ) {

            $search_where = ' AND (' . implode( ') OR (', $search_queries ) . ') ';

        }

        if ( ! empty( $include ) && is_array( $include ) ) {

            $search_where .= ' AND posts.ID IN(' . implode( ',', array_map( 'absint', $include ) ) . ') ';

        }

        if ( ! empty( $exclude ) && is_array( $exclude ) ) {

            $search_where .= ' AND posts.ID NOT IN(' . implode( ',', array_map( 'absint', $exclude ) ) . ') ';

        }

        if ( 'virtual' === $type ) {

            $type_where = ' AND ( wc_product_meta_lookup.virtual = 1 ) ';

        } elseif ( 'downloadable' === $type ) {

            $type_where = ' AND ( wc_product_meta_lookup.downloadable = 1 ) ';

        }

        if ( ! $all_statuses ) {

            $status_where = " AND posts.post_status IN ('" . implode( "','", $post_statuses ) . "') ";

        }

        if ( $limit ) {

            $limit_query = $wpdb->prepare( ' LIMIT %d ', $limit );

        }

        // phpcs:ignore WordPress.VIP.DirectDatabaseQuery.DirectQuery

        $search_results = $wpdb->get_results(

            // phpcs:disable

            "SELECT DISTINCT posts.ID as product_id, posts.post_parent as parent_id FROM {$wpdb->posts} posts

             LEFT JOIN {$wpdb->wc_product_meta_lookup} wc_product_meta_lookup ON posts.ID = wc_product_meta_lookup.product_id

             $join_query

            WHERE posts.post_type IN ('" . implode( "','", $post_types ) . "')

            $search_where

            $status_where

            $type_where

            ORDER BY posts.post_parent ASC, posts.post_title ASC

            $limit_query

            "

            // phpcs:enable

        );

        $product_ids = wp_parse_id_list( array_merge( wp_list_pluck( $search_results, 'product_id' ), wp_list_pluck( $search_results, 'parent_id' ) ) );

        if ( is_numeric( $term ) ) {

            $post_id   = absint( $term );

            $post_type = get_post_type( $post_id );

            if ( 'product_variation' === $post_type && $include_variations ) {

                $product_ids[] = $post_id;

            } elseif ( 'product' === $post_type ) {

                $product_ids[] = $post_id;

            }

            $product_ids[] = wp_get_post_parent_id( $post_id );

        }

        return wp_parse_id_list( $product_ids );

        }
    Thread Starter mitys

    (@mitys)

    I think that search results are wrong because there is some keywords included in the excerpt of another products that influes the relevancy of the results. How to neglict the excerpts with the basic search field (without using another plugin) ?

    Thank you.

    Thread Starter mitys

    (@mitys)

    Hi, here are the requested informations, thank you.

    System Status Report:

    https://gist.github.com/chahrazedturki/3272028aa15f2b2151b698342a4b8433

    There is a fatal error but not related to the search action.

    https://gist.github.com/chahrazedturki/c5b0e8844753ee20be0ca8818eb4a1e3

    Thread Starter mitys

    (@mitys)

    Ok I sent an email to this address. Thank you.

    Thread Starter mitys

    (@mitys)

    Ok thank you ! This solution did the trick, I succeded to add the logo..

    Thread Starter mitys

    (@mitys)

    Hello, here is what I find now in the social sharing section : https://snipboard.io/bANunU.jpg and I cannot see where should I place my preview image. Could you share with me a video on how to set a general preview image as we used to do with the old theme.

    Thank you.

    • This reply was modified 2 years, 1 month ago by mitys.
    Thread Starter mitys

    (@mitys)

    Hello, here is a screenshot with the social tab that I am talking about. https://snipboard.io/Zn6bVG.jpg

    I cannot find it now with the plugin update..

    Thank you.

    Thread Starter mitys

    (@mitys)

    Here is the link of my last support ticket : https://ww.wp.xz.cn/support/topic/missing-social-tab-2/#post-17703939

    Thread Starter mitys

    (@mitys)

    Hello, there is not a “Categories & tags” tab inside “Content Types”: https://ibb.co/D56WJCx

    Thread Starter mitys

    (@mitys)

    Hello Yes but I want to set it as a general setting..

    Thread Starter mitys

    (@mitys)

    It’s on the wp-admin page, the dashboard of WordPress, I sent to you a screenshot.

    There isn’t an error on the console..

    Thread Starter mitys

    (@mitys)

    Yoast: Version 22.4

    WP: Version 5.6.2

    PHP: 8

    https://ibb.co/jfWYWYC

    Thread Starter mitys

    (@mitys)

    Hello, they are both activated..

Viewing 15 replies - 1 through 15 (of 36 total)