یک فروشگاه ووکامرسی راه اندازی کرده ام، سوالی که دارم اینه:
چطور می تونم در صفحه "محصول تکی" به یکی از ویژگی هایی که برای محصولم از پیش تعریف کرده ام و بایگانی آن هم فعال هستش، دسترسی پیدا کنم.
مثلا من برای محصولات فروشگاه ووکامرس خودم یک ویژگی برند-brand رو ایجاد کردم. این ویژگی در کنار سایر ویژگی ها، در جدول مشخصات تکمیلی ظاهر میشه و با کلیک روی مقدار برند، صفحه ی بایگانی هم براش فعال هستش.
حالا من میخوام، ویژگی برند-brand رو خارج جدولم، بصورت مجزا در داخل صفحه ی محصولم دسترسی داشته باشم. به کمک چه کد و توابعی میتونم این دسترسی رو داشته باشم؟
(قصد ندارم از افزونه ای مجزا برای برند استفاده کنم، میخوام ویژگی برندی که ایجاد کردم رو بهش دسترسی داشته باشم)
ممنون میشم راهنمایی بفرمایید.
(توی اینترنت هم زیاد جستجو کردم، نتیجه ای نگرفتم)
خدمت شما @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>
@ali.safir1370 - @endworld - @saber.tabatabaee - @hossein.r.1442 - @aminmoghadas - @omid111ashrafi - @akbar137198 و سایر عزیزان
اگر تونستید مطالعه نمایید و راهکاری داشتید ممنون میشم بفرمایید.
درود...
با پست تایپ می توانید این ویژگی ایجاد کنید و همین طور به خوای به هر صفحه آن ویژگی مثل بایگانی یا تگ و غیره دسترسی داشته باشید کافیه صفحه ادامه نوشته مثلا archive-{نام پست تایپ}.php قرار دهید...
@endworld
ممنون از نظرتون
ببینید، در خود بخش مدیریت، از طریق گزینه ی محصولات --> ویژگی ها میام و این ویژگی برند-brand رو تعریف می کنم. بنابراین دیگه نیازی نیست که یک نوع سفارشی (post-type) ایجاد کنم. چون وقتی یک ویژگی برای محصول تعریف می کنیم و گزینه بایگانی رو هم براش می زنیم، هم این نوع رو ایجاد می کنه و هم اینکه بایگانی رو براش ایجاد می کنه.
منتها الان، وقتی وارد صفحه محصول میشیم، اینها رو توی جدول اطلاعات تکمیلی می بینیم.
اونجا یک ستون میادش به اسم برند و مقدارش هم در ستونی بعدی جای میگیره.
من میخوام خارج از جدول، به این مقادیر دسترسی یابم.
سلام
توی صفحه محصول ویژگی ها در آبجکتی به نام $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>
شما میتونید از همین آبجکت در هر جای صفحتون استفاده کنید. اگر بازم متوجه نشدید بفرمایید تا بیشتر توضیح بدم
@aminmoghadas
سپاس از شما و پاسختون
این رو متوجه میشم و دیدمش، ولی من کل ویژگی هارو نمیخوام پیمایش کنم. یک ویژگی خاص رو میخوام.
چطوری می تونم ویژگی ای که خودم تعریف کردم رو بصورت مجزا بهش دسترسی داشته باشم؟ برای مثال، ویژگی برند-brand که بایگانی هم براش فعال هستش.
مثلا میخوام در صفحه محصول خودم، این توی خروجی ثبت بشه:
دسته بندی: گوشی، برند: سامسونگ
(بعلاوه خود کلمه سامسونگ هم بصورت پیوند باشه، چون بایگانی ویژگی برند رو هنگام تعریف فعال کردم)
خدمت شما @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>
@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
من سعی کردم یک کد کوتاه بنویسیم که در صورت نیاز به موارد دیگه، به جز برند هم بکارم بیادش و منعطف باشه.
در واقع این کد، همون کد شما هستش، فقط چند مورد کوچیک بهش اضافه کردم.
خواستم ببینم نظرتون چیه؟ آیا ازین تمیزتر و کوتاهتر هم میشه نوشت یا خیر.
بله در حال حاضر این کد نیاز من رو برآورده می کنه.
@milad
یک شرط دیگه اضافه کنید در صورتی که خصوصیتتون لینک داشت بهش لینک بده اگه نداشت بدون لینک بزاره. فکر کنم اوکی هست دیگه نیاز به تغییر نداشته باشه.
@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>
@milad عزیز
سلام
لطف می کنی نتیجه رو بگی و اینکه چکار کردی؟
چون من دقیقا این مشکل تو رو دارم و خیلی نیاز دارم بهش، چون درگیرم کرده...
من دارم صفحه محصولم رو با المنتور طراحی می کنم اما در فراخوانی ویژگی محصولات مشکل دارم! (مشکلی که داشتی) و متوجه این داستان نشدم که این کدها رو کجا قرار بدم و چطور فراخوانی کنم
ممنونتم راهنمایی کنی
سلام
من با استفاده از پلاگین Product Attributes Shortcode مقادیر هر ویژگی مثلا برند را به صورت جداگانه دریافت کردم. این افزونه رایگان هست و فقط کافی است شورت کد مربوط به ویژگی را در المان مدنظرتان قراردهید. مثلا داخل المان جعبه اطلاعات بعد قرار دادن عنوان برند، در بخش بعدی یعنی ساب تایتل به جای متن، برچسب پویا را روی کد کوتاه قرار میدهیم و سپس کد کوتاه مربوط به ویژگی مد نظرمان که من برند انتخاب کردم را قرار میدهیم. کدکوتاه:
[wcpas_product_attributes attribute="brand"]
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟