Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在WooCommerce产品页面上显示作者元数据_Php_Wordpress_Woocommerce_Hook - Fatal编程技术网

Php 在WooCommerce产品页面上显示作者元数据

Php 在WooCommerce产品页面上显示作者元数据,php,wordpress,woocommerce,hook,Php,Wordpress,Woocommerce,Hook,我正在WoodPress网站上使用WooCommerce产品供应商插件。每个供应商都有自己的供应商档案。我想在每个供应商的产品上显示作者元数据,如LinkedIn、facebook、wikipedia等 社交档案数据存储在常规WordPress用户档案中。如果您在WP安装中创建了新用户,您应该在联系人信息表格下看到facebook个人资料URL、Wikipedia、LinkedIn等。因此,每个用户只需在WordPress档案中输入他们的社交档案 我是PHP新手,所以这可能是一个非常基本的问题。

我正在WoodPress网站上使用WooCommerce产品供应商插件。每个供应商都有自己的供应商档案。我想在每个供应商的产品上显示作者元数据,如LinkedIn、facebook、wikipedia等

社交档案数据存储在常规WordPress用户档案中。如果您在WP安装中创建了新用户,您应该在联系人信息表格下看到facebook个人资料URL、Wikipedia、LinkedIn等。因此,每个用户只需在WordPress档案中输入他们的社交档案

我是PHP新手,所以这可能是一个非常基本的问题。我试图通过大量的跟踪和错误使我的代码正常工作。然而,当我试图从标题中获取用户id时,我的代码陷入了死胡同

如果我进行var_转储($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_转储,我将第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>';
}
add_操作('woocommerce_后加_至购物车按钮','our_供应商信息');
功能我们的供应商信息(){
if(is_product()){
//获取订单项的产品id
$product\u id=获取\u查询的\u对象()->id;
//从产品id获取供应商id
$vendor\u id=WC\u Product\u Vendors\u Utils::从\u Product获取\u vendor\u id\u($Product\u id);
//获取供应商数据
$vendor\u data[$vendor\u id]=WC\u产品\u Vendors\u Utils::获取\u vendor\u data\u by\u id($vendor\u id)->名称;
var_转储(供应商_数据);
//现在从标题中获取用户id
$user=get\u userdatabylogin($vendor\u data);
//获取社交资料
$wikipedia=获取作者元('wikipedia',$user->ID);
回声';
如果(获取作者元数据('wikipedia',$user->ID)){
回声';
}否则{
回声“你好,世界!”;
}
}
回声';
}

我从未使用过WooCommerce供应商插件,所以我没有测试过这段代码。更具体地说,
$vendor\u id
可能只是与供应商关联的常规用户id。如果是这样的话,那么获取用户ID的子程序将是不必要的,但是,为了以防万一,我将包含包含它的代码的第二个版本。我还重新编写了它,以避免在没有任何内容的情况下输出空div

另外,
woocommerce\u-after\u-add\u-to\u-cart\u按钮
是一个出现在
单个产品
模板中的钩子,因此您不需要测试是否显示了带有
is\u-product()
的产品


你有没有检查过数据库中是否存在“维基百科”的元密钥?我对数据库并没有太多经验。然而,我确实看了一下,在wp_usermeta中有一个名为meta_key的专栏,其中列出了所有的社交媒体档案:facebook、instagram、linkedin、myspace、pinterest、soundcloud、tumblr、twitter、youtube和wikipedia。然后,配置文件链接存储在meta_值中。它是常规的WP用户元数据。如果您在新的WordPress安装上创建了一个新用户,您应该能够在contact information form表下看到社交配置文件。除非为该条目设置了值,否则不会在数据库中创建该条目,但我将假定您希望显示该条目的部分或所有用户的值都已设置。通常情况下,我希望检查是否找到/满足了所有必要和预期的值/条件。那么,首先,你是不是在前端看到了“Hello World!”?如果不是,则表明is_tax('shop_vendor')为假,或者可能“product_vendors_tab_content_before”操作未按预期工作。是的,某些用户的值已填写并存储在数据库中。不,我没有得到你好世界。我试着把商店的供应商改成产品猫,但没什么不同。。。在“将内容添加到购物车”按钮之后,我将之前的选项卡内容更改为woocommerce。该按钮做了一些事情-我的布局搞砸了,但仍然没有输出任何内容:/is_tax(“商店供应商”)肯定是错误的。我从我正在链接的博客文章中获取了if声明。我看到他正在用它把上传字段放在商店供应商的后端。。。我只需要在前端输出,而不需要在商店供应商后端输出…第二个解决方案使用$vendor_id作为唯一的id实现了这一点。非常感谢你!我真的是一个php新手,但在这个过程中学到了很多。。。你帮了我很大的忙,为我指明了正确的方向。非常感谢!
/**
 * 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>';

    }

}
/**
 * If $vendor_id is *not* 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 there's no vendor_id then nothing to do here
    if ( $vendor_id ) {

        // get vendor data so we can get User ID
        $vendor_data = WC_Product_Vendors_Utils::get_vendor_data_by_id( $vendor_id ); 

        //get_userdatabylogin() is deprecated, also $vendor_data does not include a "login," but does include a slug
        //(which should be reliable)
        $user_id = get_user_by( 'slug', $vendor_data['slug'] )->ID ; 

        //don't output anything unless there's a reason to do it
        if ( get_the_author_meta( 'wikipedia', $user_id ) ) {

            // Get Wikipedia profile url
            $wikipedia = get_the_author_meta( 'wikipedia', $user_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>';

        }

    }

}