Динамически передавайте массив идентификаторов продуктов в шорткод Woocommerce "products" - PullRequest
0 голосов
/ 13 ноября 2018

Я использую тему и у меня есть пользовательский тип сообщения "Продавец".У меня есть продукты в WooCommerce, где продукт назначается продавцом через поля Advanced Custom.В моем файле single-seller.php у меня есть:

<?php echo do_shortcode('[products]'); ?>

, который отлично возвращает продукты в соответствии с заданной темой.У меня есть запрос, через который я могу выполнить запрос и отобразить свой собственный код:

$relatedProducts = get_posts(array(
    'meta_query' => array(
        array(
            'key' => 'seller', //ACF field name
            'value' => get_the_ID(),
            'compare' => 'LIKE'
        ),
    ),
    'numposts' => -1,
    'post_status' => 'publish',
    'post_type' => 'product',
));

Могу ли я передать шорткод в качестве аргумента идентификатора и какой лучший способ сделать это?

<?php echo do_shortcode('[products ids=""]'); ?>

ура всем.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Уже есть ids аргумент для woocommerce [products] шорткод, который вы можете использовать…

В функции get_posts() вы добавите массив arguments:

'fields'     => 'ids',

чтобы получить массив идентификаторов продуктов ...

Затем, используя функцию implode() для преобразования массива идентификаторов продуктов в строку идентификаторов, вы сможете включить идентификаторы в виде строки в свой шорткод, таким образом:

<?php // Your query
$related_ids = get_posts(array(
    'meta_query'  => array(
        array(
            'key'     => 'seller', //ACF field name
            'value'   => get_the_ID(),
            'compare' => 'LIKE'
        ),
    ),
    'numposts'    => -1,
    'post_status' => 'publish',
    'post_type'   => 'product',
    'fields'      => 'ids', // <==== HERE to get an array of IDs
)); ?>

<?php echo do_shortcode("[products ids='".implode(',',$related_ids)."']"); ?>

Проверено и работает.

0 голосов
/ 13 ноября 2018

Ваш собственный шорткод? Вот как создать шорткод с аргументами: https://developer.wordpress.org/plugins/shortcodes/shortcodes-with-parameters/

И в запросе вам нужно будет добавить

'post__in' => array(<put list of id here, separated by comma>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...