Получить идентификатор продукта в пользовательском фильтре WooCommerce / Plugin - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь изменить URL для редактирования продукта, созданный с помощью этой функции плагинов:

function dokan_edit_product_url( $product ) {
    if ( ! $product instanceof WC_Product ) {
        $product = wc_get_product( $product );
    }
    if ( ! $product ) {
        return false;
    }
    if ( 'publish' === $product->get_status() ) {
        $url = trailingslashit( get_permalink( $product->get_id() ) ) . 'edit/';
    } else {
        $url = add_query_arg(
            [
                'product_id' => $product->get_id(),
                'action'     => 'edit',
            ],
            dokan_get_navigation_url( 'products' )
        );
    }
    return apply_filters( 'dokan_get_edit_product_url', $url, $product );
}

Вы можете видеть, что у него есть apply_filters. Поэтому я пытаюсь создать фильтр для изменения URL-адреса следующим образом: example.com/edit-product/product-id

add_filter( 'dokan_get_edit_product_url', function() {

  // I need to get the PRODUCT ID here somehow.
  $url = 'example.com/dashboard/edit-product' . $product_id;

  return $url;

} );

Как я могу получить идентификатор продукта в своем фильтре? Мне нужно взять идентификатор продукта и прикрепить его к: example.com/dashboard/edit-product/ + product_id

Вот одна попытка:

add_filter( 'dokan_get_edit_product_url', function( $product ) {

  $product = wc_get_product( $product );
  var_dump($product);

  return $url;

} );

Результат:

/app/filters.php:175:boolean false

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Следуя предложению в комментариях @ howard-e, я просто пропустил global $product;

Вот мой полный фильтр:

add_filter( 'dokan_get_edit_product_url', function( $product ) {

  global $product;

  $url = dokan_get_navigation_url() . 'edit-product?product_id=' . $product->get_id();

  return $url;

} );

Очевидно, формат $ url уникален для моей установки, но в любом случае стоит опубликовать полный код.

0 голосов
/ 21 марта 2020

Может быть, так? (не проверено)

function my_dokan_get_edit_product_url ( $url, $product ) {
    $product_id = $product->get_id();

    $url = 'example.com/dashboard/edit-product' . $product_id;

    return $url;
}
add_filter( 'dokan_get_edit_product_url', 'my_dokan_get_edit_product_url', 10, 2 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...