我正在WordPress网站上使用WooCommerce产品供应商插件。每个供应商都有自己的供应商资料。我想在每个供应商产品上显示诸如LinkedIn,Facebook,Wikipedia等的作者meta。
社交资料数据存储在常规WordPress用户资料中。如果您在WP安装上创建新用户,则应该在联系信息表格表下看到facebook个人资料URL,Wikipedia,LinkedIn等。因此,每个用户只需在WordPress个人资料中输入他们的社交资料即可。
我是PHP新手,所以可能是一个非常基本的问题。我试图通过大量的跟踪和错误使我的代码正常工作。但是,当我尝试从标题中获取用户ID时,我的代码陷入了僵局。
如果我这样做var_dump($ vendor_data);我得到了我需要的所有用户信息:
array(1) { [63]=> array(21) { ["notes"]=> string(0) "" ["logo"]=> string(0) "" ["profile"]=> string(0) "" ["email"]=> string(0) "" ["admins"]=> array(1) { [0]=> int(20) } ["commission"]=> int(70) ["commission_type"]=> string(10) "percentage" ["paypal"]=> string(0) "" ["timezone"]=> string(5) "UTC+2" ["enable_bookings"]=> string(2) "no" ["per_product_shipping"]=> string(2) "no" ["instant_payout"]=> string(2) "no" ["term_id"]=> int(63) ["name"]=> string(9) "Tobias M." ["slug"]=> string(8) "tobias-m" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(63) ["taxonomy"]=> string(20) "wcpv_product_vendors" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(2) } }
在上面的var_dump中,我将第11行更改为:
$vendor_data[ $vendor_id ] = WC_Product_Vendors_Utils::get_vendor_data_by_id( $vendor_id )->name;`
做完一些研究后,我发现->无效,因为->意味着我正在访问一个对象,但就我而言,我需要从数组中检索数据。因此,我尝试了类似的方法,但还是没有运气:
// get vendor data
$vendor_data = WC_Product_Vendors_Utils::get_vendor_data_by_id( $vendor_id['name'] );
$name = $vendor_data['name'];
我的代码:
add_action( 'woocommerce_after_add_to_cart_button', 'our_vendor_info' );
function our_vendor_info() {
if( is_product() ) {
// get the product id of the order item
$product_id = get_queried_object()->ID;
// get vendor id from product id
$vendor_id = WC_Product_Vendors_Utils::get_vendor_id_from_product( $product_id );
// get vendor data
$vendor_data[ $vendor_id ] = WC_Product_Vendors_Utils::get_vendor_data_by_id( $vendor_id )->name;
var_dump( $vendor_data );
// Now get user id from title
$user = get_userdatabylogin($vendor_data);
// Get social profiles
$wikipedia = get_the_author_meta( 'wikipedia', $user->ID );
echo '<div class="large-3 columns venprofilelink">';
if (get_the_author_meta( 'wikipedia', $user->ID )) {
echo '<span class="some-talent"><a href="'. $wikipedia .'" target="blank" rel="noopener noreferrer"><img src="http://example.local/wp-content/uploads/2019/09/wikipedia-logo.svg" /></a></span>';
} else {
echo 'Hello World!';
}
}
echo '</div>';
}
答案 0 :(得分:0)
我从未使用过WooCommerce Vendors插件,因此我没有测试过此代码。更具体地说,看起来css/style.css
可能只是与供应商关联的常规用户ID。如果真是这样,那么获取用户ID的子例程将是不必要的,但是,以防万一这是错误的,我将提供包含它的代码的第二个版本。我也正在重新编写它,以避免内部无内容时输出空div。
此外,$vendor_id
是出现在woocommerce_after_add_to_cart_button
模板中的一个挂钩,因此您无需测试是否要显示带有single-product
的产品。
is_product()
如果不是这种情况,并且/**
* Output a Wikipedia image-link for a a Woocommerce Vendor
* If $vendor_id is equal to $user_id
**/
add_action( 'woocommerce_after_add_to_cart_button', 'our_vendor_info' );
function our_vendor_info() {
// get vendor id from product id
$vendor_id = WC_Product_Vendors_Utils::get_vendor_id_from_product( get_the_ID() );
if ( $vendor_id && get_the_author_meta( 'wikipedia', $vendor_id ) ) {
// Get Wikipedia profile
$wikipedia = get_the_author_meta( 'wikipedia', $vendor_id );
echo '<div class="large-3 columns venprofilelink">';
echo '<span class="some-talent">
<a href="'. $wikipedia .'" target="blank" rel="noopener noreferrer">
<img src="/wp-content/uploads/2019/09/wikipedia-logo.svg" />
</a>
</span>';
echo '</div>';
}
}
确实是一个唯一的ID号,则意味着将其与特定用户ID关联的编码人员无需费心将后者包含在$ vendor_id数据或其任何实用程序中函数,过滤器或操作,那么您将需要一些更复杂的内容,例如您或其他编码人员写的内容:
$vendor_id