Как проверить, создан ли продукт пользователем в woocommerce - PullRequest
0 голосов
/ 01 февраля 2019

Добрый день, я пытаюсь проверить, был ли продукт создан пользователем, и если нет, кнопка добавления в корзину должна быть удалена.

Я работаю в магазине, в котором зарегистрированный пользовательМожно создать продукт из внешнего интерфейса.Я добавил этот аргумент для создания продукта из внешнего интерфейса;

$post = array(
        'post_author' => $currentCOUser_ID // This Return the User's ID using wp_get_current_user()->ID
        'post_status' => "publish",
        'post_excerpt' => $pProduct_excerpt,
        'post_title' => $ProductTitle,
        'post_type' => "product",
    );

    //create product for product ID
    $product_id = wp_insert_post( $post, __('Cannot create product', 'izzycart-function-code') );

Когда продукт создан, я только хочу, чтобы автор и администратор могли видеть кнопку «Добавить в корзину» на отдельной странице продукта.Я использовал приведенный ниже код, но не работал:

function remove_product_content() {
    global $post;
    $current_user = wp_get_current_user();
    $product_author_id = $current_user->ID;
    $admin_role = in_array( 'administrator', (array) $current_user->roles );


    //check if is a product & user is logged in and is either admin or the author
    //is a product and user is not logged in, remove add to cart
    //is a product and user is logged in and not either admin or product author, remove add to cart button
    if ( is_product() && is_user_logged_in() && (!$admin_role || $product_author_id != $post->post_author)  ) {
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    }
}
add_action( 'wp', 'remove_product_content' );

, когда я запускаю приведенный выше код, он полностью скрывает кнопку добавления в корзину от всех.Не уверен, что я делаю не так.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 01 февраля 2019

Вам не хватает амперсанда.Это должно быть &&.& немного мудро AND.См. Эту ссылку для получения дополнительной информации о разнице между ними: https://stackoverflow.com/a/2376353/10987825

Кроме того, заключите часть оператора || в скобки.В противном случае, пока текущий пользователь не является автором, он будет скрыт.Проверьте эти две ссылки, чтобы увидеть разницу.

Неверная версия

Правильная версия

Таким образом, ваш код станет:

function remove_product_content() {
    global $post;
    $current_user = wp_get_current_user();
    $product_author_id = $current_user->ID;


    //check if is a product & user is logged in and is either admin or the author
    //is a product and user is not logged in, remove add to cart
    //is a product and user is logged in and not either admin or product author, remove add to cart button
    if ( is_product() && (!is_user_logged_in() || (!is_admin() && $product_author_id != $post->post_author)) ) {
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    }
}
add_action( 'wp', 'remove_product_content' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...