Woocommerce - 按ID搜索产品

时间:2015-10-08 11:35:19

标签: php wordpress woocommerce

不幸的是,这个基本功能还没有在Woocommerce中实现,所以我不得不寻求你的帮助。

我需要通过前端搜索框按 ID SKU 搜索产品。我已经能够安装插件来解决 SKU 的问题,但我仍然无法通过 ID 进行搜索。 如果我在搜索中输入产品ID ,它只会给我0个结果。

我已经完成了很多谷歌搜索,但似乎到目前为止还没有人需要这样的选择。

非常感谢任何建议!

示例产品链接:http://leighplumbing.co.uk/product/bisque-decorative-panel-towel-radiator/

非常感谢你,并原谅我糟糕的英语技能。

2 个答案:

答案 0 :(得分:0)

这个插件将有助于创建按ID搜索产品的功能,当前的插件将通过sku搜索产品,您需要更改我尝试的SQL查询并且其工作正常。

  

https://wordpress.org/plugins/search-by-sku-for-woocommerce/

答案 1 :(得分:0)

非常简单,Pelly只需要在archive-product.php文件中添加一个条件。文件路径:plugins \ woocommerce \ templates \ archive-product.php

通过主题文件覆盖此文件将此文件移动到您的主题文件夹,如: 主题\您的主题\ woocommerce \存档product.php

条件是:

if ( is_search() ) {
    //put your search results markup here (you can copy some code from archive-product.php file and also from content-product.php to create a standard markup
} else {
    // here goes the content that is already in that file (archive-product.php) 
}

喜欢我的模板:

    <?php
/**
 * The Template for displaying product archives, including the main shop page which is a post type archive.
 *
 * Override this template by copying it to yourtheme/woocommerce/archive-product.php
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

get_header( 'shop' ); ?>

<?php if ( is_search() ) { //@@@@@@@@@@@@@@@@@@@@ Search Page Reshult show form here @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
$ID = get_search_query();    //@@@@@@@ Get Searched Product ID
if ( FALSE === get_post_status( $ID ) ) {    //@@@@@@ Check product exist or Not
  // The post does not exist

  echo 'Product Not Available...';

} else {
  // The post exists
  echo do_shortcode('[product id="'.$ID.'"]') ;
}

 }   // @@@@@@@@@@@@@@@@@@@@@@@@@@@  End Search Page Reshult Code


 else     // @@@@@@@@@@@@@@@@@@Shop Page Code start Here@@@@@@@@@@@@@@@@@@@  
 {   
        /**
         * woocommerce_before_main_content hook
         *
         * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
         * @hooked woocommerce_breadcrumb - 20
         */
        do_action( 'woocommerce_before_main_content' );
    ?>
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>

<h1 class="page-title">
  <?php woocommerce_page_title(); ?>
</h1>
<?php endif; ?>
<?php
            /**
             * woocommerce_archive_description hook
             *
             * @hooked woocommerce_taxonomy_archive_description - 10
             * @hooked woocommerce_product_archive_description - 10
             */
            do_action( 'woocommerce_archive_description' );
        ?>
<?php if ( have_posts() ) : ?>
<?php
                /**
                 * woocommerce_before_shop_loop hook
                 *
                 * @hooked woocommerce_result_count - 20
                 * @hooked woocommerce_catalog_ordering - 30
                 */
                do_action( 'woocommerce_before_shop_loop' );
            ?>
<?php woocommerce_product_loop_start(); ?>
<?php woocommerce_product_subcategories(); ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php
                /**
                 * woocommerce_after_shop_loop hook
                 *
                 * @hooked woocommerce_pagination - 10
                 */
                do_action( 'woocommerce_after_shop_loop' );
            ?>
<?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>
<?php wc_get_template( 'loop/no-products-found.php' ); ?>
<?php endif; ?>
<?php
        /**
         * woocommerce_after_main_content hook
         *
         * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
         */
        do_action( 'woocommerce_after_main_content' );
    ?>
<?php
        /**
         * woocommerce_sidebar hook
         *
         * @hooked woocommerce_get_sidebar - 10
         */
        do_action( 'woocommerce_sidebar' );
} ?>
<?php get_footer( 'shop' ); ?>