Задать вопрос
@sergo573

Почему гости сайта не видят блок upsell, а админ видит?

В функции вывода upsell woocommerce_upsell_display(); всё, что после if ( $upsells ) : не видят незарегистрированные пользователи сайта, а администратор всё видит на самом сайте, в чем может быть проблема?

UPD: Установил плагин User role, создал обычного пользователя, путем подбора возможностей для роли, выяснилось, что если, добавить обычному пользователю действие edit_others_products, то он видит блок up-sells...
Куда дальше копать, без понятия :(
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
@Gamelot
Программист php
Надо проверить шаблоны страницы, в которой у Вас стоит вызов этой функции. Дело либо в шаблоне страницы, в вызове этой страницы, либо внутри этой функции.

Вот исходный код для Woo версии 6.7.0. Видим, что для вывода используется шаблон single-product/up-sells.php. Нужно заглянуть в него как в папке /wp-content/plugins/woocommerce/templates, так и в теме /wp-content/themes/theme_name/woocommerce/.

Еще Вы можете видеть вызовы хуков - apply_filters(). В них тоже может быть проблема.

Почему-то в коде я не вижу блок - if ( $upsells ) : Видимо, у Вас другая версия.

function woocommerce_upsell_display( $limit = '-1', $columns = 4, $orderby = 'rand', $order = 'desc' ) {
	global $product;

	if ( ! $product ) {
		return;
	}

	// Handle the legacy filter which controlled posts per page etc.
	$args = apply_filters(
		'woocommerce_upsell_display_args',
		array(
			'posts_per_page' => $limit,
			'orderby'        => $orderby,
			'order'          => $order,
			'columns'        => $columns,
		)
	);
	wc_set_loop_prop( 'name', 'up-sells' );
	wc_set_loop_prop( 'columns', apply_filters( 'woocommerce_upsells_columns', isset( $args['columns'] ) ? $args['columns'] : $columns ) );

	$orderby = apply_filters( 'woocommerce_upsells_orderby', isset( $args['orderby'] ) ? $args['orderby'] : $orderby );
	$order   = apply_filters( 'woocommerce_upsells_order', isset( $args['order'] ) ? $args['order'] : $order );
	$limit   = apply_filters( 'woocommerce_upsells_total', isset( $args['posts_per_page'] ) ? $args['posts_per_page'] : $limit );

	// Get visible upsells then sort them at random, then limit result set.
	$upsells = wc_products_array_orderby( array_filter( array_map( 'wc_get_product', $product->get_upsell_ids() ), 'wc_products_array_filter_visible' ), $orderby, $order );
	$upsells = $limit > 0 ? array_slice( $upsells, 0, $limit ) : $upsells;

	wc_get_template(
		'single-product/up-sells.php',
		array(
			'upsells'        => $upsells,

			// Not used now, but used in previous version of up-sells.php.
			'posts_per_page' => $limit,
			'orderby'        => $orderby,
			'columns'        => $columns,
		)
	);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы