我正在尝试更改通过此插件功能创建的产品编辑网址:
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;
} );
如何在过滤器中获取产品ID?我需要获取产品ID并将其附加到: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
答案 0 :(得分:0)
在@ 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的格式对于我的设置是唯一的,但是仍然值得发布完整的代码。