У меня есть вопрос вслед за моим предыдущим вопросом: проблема с случайным отображением функции шорткода WordPress
Как я уже спрашивал в предыдущем вопросе, я хочу предотвратить отображение дублированного короткого кода на моей странице с контентом (например, я могу использовать этот короткий код 5 раз в одной статье и Я не хочу дублировать контент в эти 5 раз) И коды в моем предыдущем вопросе были правильными, но теперь я хочу интегрировать значения продуктов в свой предыдущий код, и я написал следующий код: но это неправильно и я получаю сообщение об ошибке! (Я использую эти короткие коды в сообщениях WordPress)
function my_shortcode() { $args = массив( 'предел' => -1, 'статус' => 'опубликовать', 'return' => 'id', ); $all_products = wc_get_products($args); $rnkeys = array_rand($all_products); $products_id = $all_products[$rnkeys]; $product = wc_get_product($products_id); $цена = $продукт->get_price(); $image = $product->get_image(); $title = $product->get_title(); $link = $product->get_permalink(); $значения = [ '1' => '

', '3' => '

', '4' => '

', '5' => '

', '6' => '

', */ ]; if ( ! isset( $GLOBALS['my_shortcode_used'] )) { $GLOBALS['my_shortcode_used'] = []; } $post_id = get_the_ID(); if ( ! isset( $GLOBALS['my_shortcode_used'][ $post_id ] ) || ! is_array( $GLOBALS['my_shortcode_used'][ $post_id ] ) ) { $GLOBALS['my_shortcode_used'][ $post_id ] = []; } $unused_values = array_diff($values, $GLOBALS['my_shortcode_used'][$post_id]); если (пусто ($ unused_values)) { $GLOBALS['my_shortcode_used'][ $post_id ] = []; $unused_values = $values; } $key = array_rand($unused_values); $GLOBALS['my_shortcode_used'][ $post_id ][] = $unused_values[ $key ]; вернуть $unused_values[$key]; } add_shortcode('спортсмен', 'my_shortcode'); .
Есть ли решение, которое не требует от меня повторения массивов внутри $values несколько раз?!
Проблема приведенных выше кодов заключается в том, что все массивы переменных $values возвращают произведение, и я думаю, что лучше вызывать следующие коды в отдельной функции:
$args = массив( 'предел' => -1, 'статус' => 'опубликовать', 'return' => 'id', ); $all_products = wc_get_products($args); $rnkeys = array_rand($all_products); $products_id = $all_products[$rnkeys]; $product = wc_get_product($products_id); $цена = $продукт->get_price(); $image = $product->get_image(); $title = $product->get_title(); $link = $product->get_permalink(); Я сделал то же самое, но проблема в том, что я не знаю, как встроить объединенные переменные HTML в массивы.
.