میلاد-م
4 سال پیش توسط میلاد-م مطرح شد
13 پاسخ

قرار دادن ویژگی محصول بصورت مجزا در صفحه محصول

یک فروشگاه ووکامرسی راه اندازی کرده ام، سوالی که دارم اینه:
چطور می تونم در صفحه "محصول تکی" به یکی از ویژگی هایی که برای محصولم از پیش تعریف کرده ام و بایگانی آن هم فعال هستش، دسترسی پیدا کنم.

مثلا من برای محصولات فروشگاه ووکامرس خودم یک ویژگی برند-brand رو ایجاد کردم. این ویژگی در کنار سایر ویژگی ها، در جدول مشخصات تکمیلی ظاهر میشه و با کلیک روی مقدار برند، صفحه ی بایگانی هم براش فعال هستش.

حالا من میخوام، ویژگی برند-brand رو خارج جدولم، بصورت مجزا در داخل صفحه ی محصولم دسترسی داشته باشم. به کمک چه کد و توابعی میتونم این دسترسی رو داشته باشم؟

(قصد ندارم از افزونه ای مجزا برای برند استفاده کنم، میخوام ویژگی برندی که ایجاد کردم رو بهش دسترسی داشته باشم)

ممنون میشم راهنمایی بفرمایید.
(توی اینترنت هم زیاد جستجو کردم، نتیجه ای نگرفتم)


ثبت پرسش جدید
امین مقدس
تخصص : طراح رابط کاربری، برنامه نویس...
@aminmoghadas 4 سال پیش آپدیت شد
2

خدمت شما @milad

$brand_values = get_the_terms( $product->id, 'pa_brand');
foreach ( $brand_values as $brand_value ) {
   $archive_link = get_term_link( $brand_value->slug, 'pa_brand' );
    echo 'برند: <a href="'.$archive_link.'">'.$brand_value->name.'</a>';
}

من نام رو برند وارد کردم slug رو brand

خروجی

برند: <a href="http://localhost/k/brand/samsung/">سامسونگ</a>

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش مطرح شد
-1

@ali.safir1370 - @endworld - @saber.tabatabaee - @hossein.r.1442 - @aminmoghadas - @omid111ashrafi - @akbar137198 و سایر عزیزان
اگر تونستید مطالعه نمایید و راهکاری داشتید ممنون میشم بفرمایید.


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 4 سال پیش مطرح شد
1

درود...
با پست تایپ می توانید این ویژگی ایجاد کنید و همین طور به خوای به هر صفحه آن ویژگی مثل بایگانی یا تگ و غیره دسترسی داشته باشید کافیه صفحه ادامه نوشته مثلا archive-{نام پست تایپ}.php قرار دهید...


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش آپدیت شد
-1

@endworld
ممنون از نظرتون
ببینید، در خود بخش مدیریت، از طریق گزینه ی محصولات --> ویژگی ها میام و این ویژگی برند-brand رو تعریف می کنم. بنابراین دیگه نیازی نیست که یک نوع سفارشی (post-type) ایجاد کنم. چون وقتی یک ویژگی برای محصول تعریف می کنیم و گزینه بایگانی رو هم براش می زنیم، هم این نوع رو ایجاد می کنه و هم اینکه بایگانی رو براش ایجاد می کنه.

منتها الان، وقتی وارد صفحه محصول میشیم، اینها رو توی جدول اطلاعات تکمیلی می بینیم.
اونجا یک ستون میادش به اسم برند و مقدارش هم در ستونی بعدی جای میگیره.

من میخوام خارج از جدول، به این مقادیر دسترسی یابم.


امین مقدس
تخصص : طراح رابط کاربری، برنامه نویس...
@aminmoghadas 4 سال پیش مطرح شد
2

سلام
توی صفحه محصول ویژگی ها در آبجکتی به نام $product_attributes فراخوانی میشن.
در قالب پیشفرض در خوده افزونه ووکامرس با یک foreach پیمایش میشن

<table class="woocommerce-product-attributes shop_attributes">
    <?php foreach ( $product_attributes as $product_attribute_key => $product_attribute ) : ?>
        <tr class="woocommerce-product-attributes-item woocommerce-product-attributes-item--<?php echo esc_attr( $product_attribute_key ); ?>">
            <th class="woocommerce-product-attributes-item__label"><?php echo wp_kses_post( $product_attribute['label'] ); ?></th>
            <td class="woocommerce-product-attributes-item__value"><?php echo wp_kses_post( $product_attribute['value'] ); ?></td>
        </tr>
    <?php endforeach; ?>
</table>

شما میتونید از همین آبجکت در هر جای صفحتون استفاده کنید. اگر بازم متوجه نشدید بفرمایید تا بیشتر توضیح بدم


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش مطرح شد
-1

@aminmoghadas
سپاس از شما و پاسختون
این رو متوجه میشم و دیدمش، ولی من کل ویژگی هارو نمیخوام پیمایش کنم. یک ویژگی خاص رو میخوام.
چطوری می تونم ویژگی ای که خودم تعریف کردم رو بصورت مجزا بهش دسترسی داشته باشم؟ برای مثال، ویژگی برند-brand که بایگانی هم براش فعال هستش.

مثلا میخوام در صفحه محصول خودم، این توی خروجی ثبت بشه:
دسته بندی: گوشی، برند: سامسونگ
(بعلاوه خود کلمه سامسونگ هم بصورت پیوند باشه، چون بایگانی ویژگی برند رو هنگام تعریف فعال کردم)


امین مقدس
تخصص : طراح رابط کاربری، برنامه نویس...
@aminmoghadas 4 سال پیش آپدیت شد
2

خدمت شما @milad

$brand_values = get_the_terms( $product->id, 'pa_brand');
foreach ( $brand_values as $brand_value ) {
   $archive_link = get_term_link( $brand_value->slug, 'pa_brand' );
    echo 'برند: <a href="'.$archive_link.'">'.$brand_value->name.'</a>';
}

من نام رو برند وارد کردم slug رو brand

خروجی

برند: <a href="http://localhost/k/brand/samsung/">سامسونگ</a>

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش مطرح شد
-1

@aminmoghadas
سپاس از شما مهندس، لطف کردید. یک مقداری طول کشید تا من پاسخ شما رو بررسی کنم.
پاسخ تون همون چیزی بود که من به دنبالش بودم 👍

در ادامه من کد کوتاهی رو با توجه به پاسخ شما نوشتم، اگر نگاهی بندازید و نظری داشتید ممنون میشم بفرمایید.


function getProductAttribute_func( $atts ) {
    $pro_att = shortcode_atts( array(
        'product_attribute' => 'pa_color',
    ), $atts );

    global $product;
    $taxonomy = $pro_att['product_attribute'];

    $value_label = $product->get_attribute( $taxonomy );

    $taxonomy_values = get_the_terms( $product->id, $taxonomy);
    $taxonomy_label = get_taxonomy( $taxonomy )->labels->singular_name; 

    if ( $value_label ) {
        foreach ( $taxonomy_values as $taxonomy_value ) {
            $archive_link = get_term_link( $taxonomy_value->slug, $taxonomy );
            return '<p> <span>' . $taxonomy_label . ': </span> <span> <a href="' . $archive_link . '">' . $value_label . '</a></span> </p>';
        }
    } else {
        return '<p> <span>' . $taxonomy_label . ': </span> <span> متفرقه </span> </p>'; 
    }   
}

add_shortcode( 'getProductAttribute', 'getProductAttribute_func' );

----------

[getProductAttribute product_attribute = "pa_brand"]

امین مقدس
تخصص : طراح رابط کاربری، برنامه نویس...
@aminmoghadas 4 سال پیش مطرح شد
0

@milad
الان این نیازتون رو برطرف میکنه؟


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش مطرح شد
-1

@aminmoghadas
من سعی کردم یک کد کوتاه بنویسیم که در صورت نیاز به موارد دیگه، به جز برند هم بکارم بیادش و منعطف باشه.

در واقع این کد، همون کد شما هستش، فقط چند مورد کوچیک بهش اضافه کردم.
خواستم ببینم نظرتون چیه؟ آیا ازین تمیزتر و کوتاهتر هم میشه نوشت یا خیر.

بله در حال حاضر این کد نیاز من رو برآورده می کنه.


امین مقدس
تخصص : طراح رابط کاربری، برنامه نویس...
@aminmoghadas 4 سال پیش آپدیت شد
1

@milad
یک شرط دیگه اضافه کنید در صورتی که خصوصیتتون لینک داشت بهش لینک بده اگه نداشت بدون لینک بزاره. فکر کنم اوکی هست دیگه نیاز به تغییر نداشته باشه.


robinashly
@robinashly 2 سال پیش آپدیت شد
0

@aminmoghadas
سلام
من کدتون رو وارد کردم ولی خطا میده،
syntax error, unexpected '<', expecting end of file
یه سوال دیگه بعد از اینکه راهنمایی کردین و خطاش برطرف شد برای اینکه ویژگیها رو نشون بده باید داخل صفحه المنتور چیکار کنم؟؟
البته منظوم کدی هست که همه ویژگی ها رو نمایش میده کد زیر :

<table class="woocommerce-product-attributes shop_attributes">
    <?php foreach ( $product_attributes as $product_attribute_key => $product_attribute ) : ?>
        <tr class="woocommerce-product-attributes-item woocommerce-product-attributes-item--<?php echo esc_attr( $product_attribute_key ); ?>">
            <th class="woocommerce-product-attributes-item__label"><?php echo wp_kses_post( $product_attribute['label'] ); ?></th>
            <td class="woocommerce-product-attributes-item__value"><?php echo wp_kses_post( $product_attribute['value'] ); ?></td>
        </tr>
    <?php endforeach; ?>
</table>

mehran
@mehranzati 1 سال پیش مطرح شد
0

@milad عزیز
سلام
لطف می کنی نتیجه رو بگی و اینکه چکار کردی؟
چون من دقیقا این مشکل تو رو دارم و خیلی نیاز دارم بهش، چون درگیرم کرده...

من دارم صفحه محصولم رو با المنتور طراحی می کنم اما در فراخوانی ویژگی محصولات مشکل دارم! (مشکلی که داشتی) و متوجه این داستان نشدم که این کدها رو کجا قرار بدم و چطور فراخوانی کنم

ممنونتم راهنمایی کنی


الهام تبارکی
تخصص : فریلنسر
@etelham4 4 ماه پیش مطرح شد
0

سلام
من با استفاده از پلاگین Product Attributes Shortcode مقادیر هر ویژگی مثلا برند را به صورت جداگانه دریافت کردم. این افزونه رایگان هست و فقط کافی است شورت کد مربوط به ویژگی را در المان مدنظرتان قراردهید. مثلا داخل المان جعبه اطلاعات بعد قرار دادن عنوان برند، در بخش بعدی یعنی ساب تایتل به جای متن، برچسب پویا را روی کد کوتاه قرار میدهیم و سپس کد کوتاه مربوط به ویژگی مد نظرمان که من برند انتخاب کردم را قرار میدهیم. کدکوتاه:
[wcpas_product_attributes attribute="brand"]


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام