Forums Forums Search Search Results for 'woocommerce'

Viewing 10 results - 151 through 160 (of 1,497 total)
  • Author
    Search Results
  • #257783

    Anonymous
    Inactive

    Hi I sell courses for medical education and I recently bought your pro plugin because I wanted to create a catalogue page of courses (/courses) which could be filtered by category, etc. So far your plugin will be an exactly solution to my usecase…with one issue…

    You may be asking yourself why I don’t just use the filtering native in my learning management system or ecommerce system (like woocommerce) and that’s a good question.

    I broke off the learning platform and ecommerce side of my business to a subdomain edu.mydomain.com in an attempt to keep my main site lean for SEO / page load time purposes.

    Currently my site is set up with sales PAGES like this:

    mysite.com/course/course-1
    mysite.com/course/course-2

    All I require is a simple catalogue of my course sales pages which users can use to find a course. This page is 100% for users. I will be deindexing it. Because I’ve used pages I don’t have the category and tag system I would for posts and your plugin is useless at this point.

    The way I see it I have 3 options and I’d like input on the BEST option:

    1. Switch these course pages to “posts”
    2. Keep the pages and use a plugin like this: https://wordpress.org/plugins/post-tags-and-categories-for-pages/ to add that functionality. Would this work with your plugin and is it going to require a lot of custom coding?
    3. Drop this plugin and use a catalogue plugin like this https://wordpress.org/plugins/ultimate-product-catalogue/ Not super excited about this since the “bloat” is what I was trying to avoid in the beginning.

    Keep in mind:

    1. I’m doing this for a site redesign and I’m currently working on a staging site so I have flexibility to make changes with low impact so I have options.
    2. I prioritize simplicity and I’m not super technical so custom coding is not ideal for me.
    3. Further to number 2 I want things to work without a lot of maintenance.
    4. My preference is to use option 2 above if it is easily done without a lot of code.

    I thank you in advance for your feedback/suggestions.

    #257636

    Trevor
    Participant

    Here is the modified template code (copy it from the forum post, not the email, as email software will change some characters).

    What did I change?

    On line 78 is where I moved the form output to. I commented out the line where it had been – line 104. If this new code works, you can remove line 104.

    Line 80 is commented out (in HTML – again if this works, remove this line):

    <li class="product">

    and added back in at line 109 as an echo, and the ending </li> added in at line 123 also as an echo, and the original end </li> now on line 128 is commented out (can also remove).

    Try this code then:

    <?php
    /**
     * The Template for displaying product archives, including the main shop page which is a post type archive
     *
     * This template can be overridden by copying it to yourtheme/woocommerce/archive-product.php.
     *
     * HOWEVER, on occasion WooCommerce will need to update template files and you
     * (the theme developer) will need to copy the new files to your theme to
     * maintain compatibility. We try to do this as little as possible, but it does
     * happen. When this occurs the version of the template file will be bumped and
     * the readme will list any important changes.
     *
     * @see https://docs.woocommerce.com/document/template-structure/
     * @package WooCommerce/Templates
     * @version 3.4.0
     */
    
    defined( 'ABSPATH' ) || exit;
    
    get_header( 'shop' ); ?>
    
    <?php
    
    /**
     * Hook: woocommerce_before_main_content.
     *
     * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
     * @hooked woocommerce_breadcrumb - 20
     * @hooked WC_Structured_Data::generate_website_data() - 30
     */
    do_action( 'woocommerce_before_main_content' );
    
    ?>
    <header class="woocommerce-products-header">
            <?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
                    <h1 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h1>
            <?php endif; ?>
    
            <?php
            /**
             * Hook: woocommerce_archive_description.
             *
             * @hooked woocommerce_taxonomy_archive_description - 10
             * @hooked woocommerce_product_archive_description - 10
             */
            do_action( 'woocommerce_archive_description' );
            ?>
    </header>
    
    <?php
    
    if ( woocommerce_product_loop() ) {
    
            /**
             * Hook: woocommerce_before_shop_loop.
             *
             * @hooked woocommerce_output_all_notices - 10
             * @hooked woocommerce_result_count - 20
             * @hooked woocommerce_catalog_ordering - 30
             */
            do_action( 'woocommerce_before_shop_loop' ); ?>
    
    echo do_shortcode('[searchandfilter id="3791"]');
            <ul class="wpf-search-container products">
    <!--        <li class="product"> -->
            <?php
    
    // Get The queried object ( a WP_Term or a WP_Post Object)
    $term = get_queried_object();
    
    // To be sure that is a WP_Term Object to avoid errors
    if( is_a($term, 'WP_Term') ) :
    
    // Setup your custom query
    $loop = new WP_Query( array(
        'post_type'      => 'product',
        'posts_per_page' => -1,
        'post_status'    => 'publish',
        'tax_query'      => array( array(
            'taxonomy' => 'product_cat', // The taxonomy name
            'field'    => 'term_id', // Type of field ('term_id', 'slug', 'name' or 'term_taxonomy_id')
            'terms'    => $term->term_id, // can be an integer, a string or an array
        ) ),
    ) );
            
    //echo do_shortcode('[searchandfilter id="3791"]');
    
    if ( $loop->have_posts() ) :
    while ( $loop->have_posts() ) : $loop->the_post();
    echo '<li class="product">';
    the_post_thumbnail( 'thumbnail');
    echo '<div style="margin:8px;">';
    echo 'movie preview - ';
    the_title();
    echo "<br>";
    $price = get_regular_or_sale_price();
            echo $price;
            echo '&nbsp';
    $regularpriceifsale = get_regular_price_if_sale();
            echo $regularpriceifsale;
    echo '<br>';
    echo '<br>';
    echo '</div>';
    echo '</li>';
    endwhile;
    wp_reset_postdata(); // Remember to reset
    endif; endif;
    ?>
    <!--                </li> -->
    </ul>
    <?php
    
            /**
             * Hook: woocommerce_after_shop_loop.
             *
             * @hooked woocommerce_pagination - 10
             */
            do_action( 'woocommerce_after_shop_loop' );
    } else {
            /**
             * Hook: woocommerce_no_products_found.
             *
             * @hooked wc_no_products_found - 10
             */
            do_action( 'woocommerce_no_products_found' );
    }
    
    /**
     * Hook: woocommerce_after_main_content.
     *
     * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
     */
    do_action( 'woocommerce_after_main_content' );
    
    /**
     * Hook: woocommerce_sidebar.
     *
     * @hooked woocommerce_get_sidebar - 10
     */
    do_action( 'woocommerce_sidebar' );
    ?>
    
    <?php get_footer(); ?>
    #257203

    In reply to: Refined search feature


    Trevor
    Participant

    Each field you want in your form (manufacturer; model number; description and category) would need to be separate custom taxonomies OR (as a preference) the first three as custom fields. WooCommerce already comes with two custom taxonomies; Product Categories (which you mention) and Product tags. The others you would need to make, with a plugin like Custom Post Type UI (if you want them as taxonomies, but, unless you have already entered the data terms, I would not) or Advanced Custom Fields to make custom fields. Custom Fields are more flexible that taxonomies.

    You might find this post useful as well:

    https://support.searchandfilter.com/forums/topic/elementor-filter-not-working-showing-all-results/#post-221562

    #257182

    Anonymous
    Inactive

    We are moving our old Joomla custom site over to wordpress/woocommerce. The old site http://www.optialinn.com has over 3000 unique items in inventory. You get too many hits if you search on one term at a time. I would like to limit search results by searching multiple tags (classes) at once as shown on my site. The search terms I use are: manufacturer; model number; description and category. You can fill in one or more terms at a time to limit search results. Can the search and filter plugin do that or are all the added search terms independent of each other. How would you build such a search engine?

    #257128

    Trevor
    Participant

    Is this in WooCommerce, or another e-commerce plugin, or are the post type and taxonomy custom made?

    Are you able to send me a live link/URL to your search page so I can take a look?

    #257057

    Anonymous
    Inactive

    <?php
    if ( ! defined( ‘ABSPATH’ ) ) { exit; }

    if ( ! isset( $content_width ) ) $content_width = 1280;

    function skelementor_init() {

    add_theme_support( ‘title-tag’ );
    add_theme_support( ‘post-thumbnails’ );
    add_theme_support( ‘automatic-feed-links’ );
    add_theme_support( ‘title-tag’ );
    add_theme_support( ‘html5’, array( ‘search-form’, ‘comment-form’, ‘comment-list’, ‘gallery’, ‘caption’ ) );
    add_theme_support( ‘custom-logo’, array(
    ‘width’ => 260,
    ‘height’ => 100,
    ‘flex-height’ => true,
    ‘flex-width’ => true,
    ) );
    add_theme_support( ‘custom-header’ );
    add_theme_support( ‘woocommerce’ );
    add_post_type_support( ‘page’, ‘excerpt’ );

    register_nav_menus(
    array( ‘main-menu’ => __( ‘Main Menu’, ‘skelementor’ ) )
    );

    load_theme_textdomain( ‘skelementor’, get_template_directory() . ‘/languages’ );
    }
    add_action( ‘after_setup_theme’, ‘skelementor_init’ );

    function skelementor_comment_reply() {
    if ( get_option( ‘thread_comments’ ) ) { wp_enqueue_script( ‘comment-reply’ ); }
    }
    add_action( ‘comment_form_before’, ‘skelementor_comment_reply’ );

    function skelementor_scripts_styles() {
    wp_enqueue_style( ‘skelementor-style’, get_stylesheet_uri() );
    }
    add_action( ‘wp_enqueue_scripts’, ‘skelementor_scripts_styles’ );

    function skelementor_register_elementor_locations( $elementor_theme_manager ) {
    $elementor_theme_manager->register_all_core_location();
    };
    add_action( ‘elementor/theme/register_locations’, ‘skelementor_register_elementor_locations’ );

    function price_range_on_save( $post_id ) {
    $post_type = ‘share’; //custom post type for events

    //Check if we are saving correct post type
    if( get_post_type( $post_id ) != $post_type)
    return;

    //Check it’s not an auto save routine
    if( defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE )
    return;

    // get the price of the post. This assumes that the price is a number and has no currency symbol or thousands separator
    $post_price = get_post_field (‘price’, $post_id);
    // set an empty default string
    $post_price_text = “”;
    // set the price text label to match the price
    if ($post_price) {
    switch($post_price) {
    case ( $post_price <= 100 ):
    $post_price_text = “0-100 kr”;
    break;
    case ( ($post_price > 100) && ($post_price <= 250) ):
    $post_price_text = “101-250 kr”;
    break;
    default:
    $post_price_text = “250 kr and up”;
    }
    }

    // update the price choice
    update_field( ‘post_price_text’, $post_price_text );
    }
    add_action(‘save_post’, ‘price_range_on_save’);

    /////////
    $roots_includes = array(
    ‘lib/extras.php’,
    ‘lib/scripts.php’,
    ‘lib/ajax.php’,
    ‘lib/post-types.php’,
    ‘lib/init.php’,
    ‘lib/utilities.php’,
    ‘lib/acf.php’,
    // ‘lib/custom-fields.php’,
    // ‘lib/custom-fields/category.php’,
    // ‘lib/custom-fields/footer.php’,
    // ‘lib/custom-fields/post.php’,
    );

    foreach ($roots_includes as $file) {
    if (!$filepath = locate_template($file)) {
    trigger_error(sprintf(__(‘Error locating %s for inclusion’, ‘roots’), $file), E_USER_ERROR);
    }

    require_once $filepath;
    }
    unset($file, $filepath);

    // CUSTOM FILTER // Add author of the current post (SPELTIPS)
    add_action( ‘elementor/query/from_same-author’, function( $query ) {
    // The author of the current post
    $author_id = get_the_author_meta(‘ID’);
    $query->set( ‘author’, $author_id );
    } );

    // CUSTOM FILTER // Add Speltips from same expert on EXPERT page
    add_action( ‘elementor/query/spel-from-same-expert’, function( $query ) {
    // The author of the current post

    $author_id = get_field( ‘wp_authors’ );

    $query->set( ‘author’, $author_id );
    } );

    add_action( ‘elementor/query/shares-from-current_author’, function( $query ) {
    // The author of the current post

    $author_id = get_the_author_meta(‘ID’);

    $expert_id = get_field( ‘expert’, ‘user_’ . $author_id );

    if( is_array( $expert_id ) ) $expert_id = $expert_id[ ‘ID’ ];

    $meta_query = $query->get( ‘meta_query’ );

    if( ! is_array( $meta_query ) ) $meta_query = [];

    $meta_query[ ‘expert_id’ ] = [
    ‘key’ => ‘expert’,
    ‘compare’ => ‘==’,
    ‘value’ => $expert_id,
    ];

    $query->set( ‘meta_query’, $meta_query );
    } );

    // CUSTOM FILTER // Add ANDELAR (SHARES) from same expert on EXPERT page
    add_action( ‘elementor/query/andelar-from-same-expert’, function( $query ) {
    // The author of the current post
    $expert_id = get_the_ID();
    $meta_query = $query->get( ‘meta_query’ );

    if( ! is_array( $meta_query ) ) $meta_query = [];

    $meta_query[ ‘expert_id’ ] = [
    ‘key’ => ‘expert’,
    ‘compare’ => ‘==’,
    ‘value’ => $expert_id,
    ];

    $query->set( ‘meta_query’, $meta_query );
    } );

    // Add Options Page
    function add_my_options_page() {
    if( function_exists(‘acf_add_options_page’) ) {
    acf_add_options_page();
    }
    }
    add_action( ‘plugins_loaded’, ‘add_my_options_page’ );

    // Don’t put anything except includes in this file
    //Pick a place for your jsons to live. We stick them into the /theme/includes/acf-json folder, but you can stick these wherever

    // change where acf json files are saved
    add_filter(‘acf/settings/save_json’, ‘jb_acf_save_json’);
    function jb_acf_save_json($path) { return get_stylesheet_directory().’/includes/acf-json’; }

    // add our custom folder to places acf json are loaded from
    add_filter(‘acf/settings/load_json’, ‘jb_acf_load_json’);
    function jb_acf_load_json($paths) { return array_merge($paths, array(get_stylesheet_directory().’/includes/acf-json’)); }

    function custom_theme_slug_filter_the_content( $content ) {
    global $wpdb;
    if(“post” == get_post_type()){
    //if(is_singular(‘posts’)){
    $requested_post_id = get_the_ID();
    $authordetails = get_field(‘acfe_author’, $requested_post_id);
    $suthorname = $authordetails[‘display_name’];
    $expert_args = array(
    ‘post_type’ => ‘expert’,
    ‘post_status’ => ‘publish’,
    ‘title’ => trim($suthorname),
    ‘orderby’ => ‘date’,
    ‘order’ => ‘DESC’
    );
    $query = new WP_Query($expert_args);
    $postid = $query->post->ID;
    $image = wp_get_attachment_image_src( get_post_thumbnail_id( $postid ), ‘full’ );
    $custom_content = ‘<div id=”ctm-img-box” class=”custom-img-box”><span class=”elementor-icon-list-icon”></span><span class=”authorname”>’.$suthorname.'</span></div>’;
    $custom_content .= $content;
    //return $custom_content;
    }else{
    $custom_content = $content;
    }
    return $custom_content;
    }
    add_filter( ‘the_content’, ‘custom_theme_slug_filter_the_content’, 1);

    function wpa_choose_ad($user_id, $expert_id) {
    $requested_post_id = get_the_ID();
    $expert_user = get_field(‘wp_authors’, $requested_post_id);
    //echo $user_id;
    $args = array(
    ‘post_type’ => ‘share’,
    ‘posts_per_page’ => 12,
    ‘orderby’ => ‘rand’,
    ‘meta_query’ => array(
    array(
    ‘key’ => ‘expert’,
    ‘value’ => $expert_id,
    ‘compare’ => “=”
    )
    )
    );
    $the_query = new WP_Query( $args );
    //echo “

    ";
        //print_r($the_query);
        $the_ad = '<div class="elementor-container elementor-column-gap-no">';
        	$the_ad .= '<div class="element-row">';
        	$the_ad .= '<div class="elementor-widget-container elementor-widget-heading"><h4 class="elementor-heading-title elementor-size-default">MINA ANDELAR</h4></div>';
        $the_ad .= '<div class="elementor-widget-container">';	
        $the_ad .= '<div class="ecs-posts elementor-posts-container elementor-posts elementor-grid elementor-posts--skin-custom">';
        if ( $the_query->have_posts() ) {
        while ( $the_query->have_posts() ) : $the_query->the_post();
        		$title = get_the_title();
        		$url = get_permalink(get_the_ID());
    			$expert_type = get_field('type', get_the_ID());
    			$expert_shares = get_field('shares', get_the_ID());
    			$expert_price = get_field('price', get_the_ID());
    
    		$the_ad .= '<div class="share_outer_box">';
    		$the_ad .= '<div class="share_price_details">';
    		$the_ad .= '<p>'.$expert_type.'</p>';
    		$the_ad .= '<p>'.$expert_shares.' andler | '.$expert_price.' SEK</p>';
    		$the_ad .= '</div>';
    		$the_ad .= '<h2 class="custom-title elementor-heading-title elementor-size-default">'.$title.'</h2>';
    				   	
    		$the_ad .= '</div>';
        endwhile;
        }
        $the_ad .= '</div>';
        $the_ad .= '</div>';
        $the_ad .= '</div>';
        $the_ad .= '</div>';
        wp_reset_postdata();
    
        return $the_ad;
    }
    
    function filter_function_name( $query_args, $sfid ) {
    	
    	//if search form ID = 19856, the do something with this query
    	if($sfid==19856)
    	{
    		//modify $query_args here before returning it
    		// args
    			$args = array(
    				'post_type'		=> 'shares',
    				'meta_query'	=> array(
    				'relation'		=> 'OR',
    			array(
    			'key'		=> 'type',
    			'value'		=> 'Europatipset',
    			'compare'	=> 'LIKE'
    			),
    			array(
    			'key'		=> 'type',
    			'value'		=> 'Stryktipset',
    			'compare'	=> 'LIKE'
    			)
    	)
    );
    	}
    	
    	return $query_args;
    }
    add_filter( 'sf_edit_query_args', 'filter_function_name', 20, 2 );
    #256940

    Anonymous
    Inactive

    I’m using the pro version and I got disappointed so it doesn’t work. I created a form, using product categories and attributes, but the search is not returning results. What am I missing? I’ve tried all the results options, woocommerce store, post file, EVERYTHING! The search does not work !!!

    #256727

    Trevor
    Participant

    Make a new field for that Post Type for these price choices, and let me know the slug name of this new field and the name of the original price field (for example, in WooCommerce it is usually _price).

    The new field can be a simple Text field.

    #256526

    Anonymous
    Inactive

    Thank you Trevor,

    I still have some issues,

    1. If I put -Load results using Ajax- it is filtering, but I can only select one option, if I choose 2 options it says that there are no products.

    2. I´m still using the woocommerce products and categories, but you recomend to use Advanced Custom Fields, right?

    Thank you.

Viewing 10 results - 151 through 160 (of 1,497 total)