Pregunta sobre WOOF - Products Filter for WooCommerce de Wordpress:

Orden aleatorio (orderby = rand) por página

Un usuario preguntó 👇

Hola. He configurado ordby = rand dentro de mi acceso directo woof_products pero también tengo per_page = 24 que produce una página.

Entonces, cuando voy a la página siguiente con una página, el orden aleatorio se genera nuevamente y, como resultado, algunos productos se duplican de las páginas anteriores. ¿Hay alguna forma de detener esto?

Gracias por adelantado

Este tema fue modificado hace 2 años, 1 mes por.

(@pavloborysenko)

Hace 2 años, 1 mes

Hola

Lamentablemente no.

este comportamiento es una especie de característica rand.

Libérame un enlace preciso a la pregunta.

(@morphim)

Hace 2 años, 1 mes

Hola. Gracias por la respuesta.

Esta es una página que no es de página (bastante larga y tarda un poco en cargarse) pero usa orderby = rand
http://sohovo-test-com.stackstaging.com/uk-voices/

Y esta es una página con orderby = rand & per_page = 24 Así que esta es una página. No es muy fácil de ver, pero algunos artistas se reproducen en otras páginas.
http://sohovo-test-com.stackstaging.com/international-voices/

También probé YITH desplazamiento ilimitado pero hace lo mismo y creo que replica las páginas.

Aquí hay un plugin: https://wordpress.org/plugins/woo-random-product-sorting-with-pagination/ que parece superar este problema al introducir un depósito de 1 hora en la semilla aleatoria, pero es para WC y no WOOF. ¿Quizás algo de esto se pueda implementar en WOOF? ¿O editar este plugin para conectarlo a WOOF en lugar de WC? Aquí está el código para ese plugin:

<?php
if(!defined('ABSPATH')){
	exit; //Exit if accessed directly.
}
if(in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))){
	if(!function_exists('do2_addRandomProductOrderSetting')&&!function_exists('do2_randomizeProductWhenSet')){
		
		//add "Random" setting to product sorting menu
		function do2_addRandomProductOrderSetting($sortby){
			$sortby['random_order'] = 'Random';
			return $sortby;
		}
		add_filter('woocommerce_default_catalog_orderby_options','do2_addRandomProductOrderSetting');
		add_filter('woocommerce_catalog_orderby','do2_addRandomProductOrderSetting');

		//randomize products when setting is used
		function do2_randomizeProductWhenSet($args){
			$orderbySetting = isset($_GET['orderby']) ? wc_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby'));
			if('random_order' == $orderbySetting){
				if(false===($seed = get_transient('do2_randSeed'))){
					$seed = rand();
					set_transient('do2_randSeed', $seed, 3600 );
				}
				$args['orderby'] = 'RAND('.$seed.')';
				$args['order'] = '';
				$args['meta_key'] = '';
			}
			return $args;
		}
		add_filter('woocommerce_get_catalog_ordering_args','do2_randomizeProductWhenSet');
	}
} else {
	if(!function_exists('do2_WooCommerceAdminNotice')){
		//warn on missing WooCommerce
		function do2_WooCommerceAdminNotice() {
	    ?>
		    <div class="notice error is-dismissible" >
		        <p><?php _e('Your site must be running WooCommerce to benefit from the WooCommerce Random Product Sorting with Pagination plugin.'); ?></p>
		    </div>
	    <?php
		}
		add_action('admin_notices', 'do2_WooCommerceAdminNotice');
	}
}

Gracias de nuevo de antemano

Esta respuesta fue modificada hace 2 años, hace un mes por.

(@pavloborysenko)

Hace 2 años, 1 mes

Hola

Debe poner las propiedades «random_order» en el archivo – plugins woocommerce-products-filter index.php aquí – https://c2n.me/3XFlTSl.png

(@morphim)

Hace 2 años, 1 mes

Oye. Gracias por esto. Lo aprecio. Las pruebas iniciales parecen ser buenas 🙂

Para usar junto con este plugin: https://wordpress.org/plugins/woo-random-product-sorting-with-pagination/ Proporciona un orden de clasificación aleatorio para los productos en WooCommerce y elimina los productos duplicados en una página. Lo hace depositando la semilla aleatoria durante una hora. Claramente, esto no pasa a WOOF, que tiene su propio orden aleatorio. Entonces …

Para cualquier otra persona, por favor

case 'random_order':
break;

al archivo index.php del plugin WOOF (** recuerde que esto se sobrescribirá en cualquier actualización) Alrededor de la línea 1882, así:

 switch ($orderby) {
			case 'random_order':
			break;
            case 'price-desc':
                $orderby = "meta_value_num {$wpdb->posts}.ID";
                $order = 'DESC';
                $meta_key = '_price';
                break;

Luego, dentro del acceso directo de WOOF en su página, agregue algo como esto:
[woof is_ajax=1 taxonomies=product_cat:96] [woof_products taxonomies=product_cat:96 orderby=random_order per_page=24 ]

Esto solo mostrará la categoría 96 (o cualquier número de gato que especifique). El acceso directo woof_products luego usa el orden aleatorio establecido por el otro plugin y solo muestra 24 productos por página. se utiliza la misma semilla aleatoria para cualquier página posterior. página Después de una hora, la aleatoriedad y el cambio de la página se actualizan durante otra hora.

Gracias por un excelente plugin y gran ayuda. Aprecio tu tiempo. Salud

Esta respuesta fue modificada hace 2 años, hace un mes por.

(@pavloborysenko)

Hace 2 años, 1 mes

Hola

Bienvenido;)

(@morphim)

Hace 2 años

Hola de nuevo. Desafortunadamente, esto funciona para aleatorizar los productos y detiene los duplicados en las páginas de la página, pero la semilla no se actualiza después de una hora (o después de cualquier momento). Supongo que esto se aplica al plugin de la página. aleatorio o funciona con WOOF.

¿Se puede agregar el límite de tiempo de semilla aleatoria a WOOF? Supongo que este código es (¿tal vez habría más?) No soy un codificador.

if(false===($seed = get_transient('do2_randSeed'))){
					$seed = rand();
					set_transient('do2_randSeed', $seed, 3600 );
				}

Gracias de nuevo de antemano

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *