فرهاد-سئو 905 ارسال شده در فروردین 95 گزارش بازنشر ارسال شده در فروردین 95 سلام به دوستان نمیدونم این کاری میخوام انجام بدم با وردپرس شدنی هست یا نه؟ میخوام در داخل صفحه محصول از دسته مادر دیگری محصولات زیردسته ای از همون رو به نمایش بگذارم میدونم میشه بصورت دستی میشه تابع دسته مورد نظر رو داخل صفحه محصول قرار داد تا نمایش داده بشه اما میخوام سیستم خودکار این کار رو انجام بده تصویر بالا رو نگاه کنید میخوام داخل صفحه محصولات مثلا کفش از برند پوما هر چی محصول داره نشون داده بشه در تصویر دقت کنید برند پوما لباس هم داره و من میخوام داخل صفحه محصول دسته کفش ها لباس ها هم نشون داده بشه حالا چون اینجا دسته مادر تغییر میکنه من نمیتونم برنامه اش رو طوری بنویسم که سیستم خودکار داخل کل محصولات بگرده و برند نایک هر چی محصول داره در صفحه محصول نشون داده بشه اول خواستم دسته بندی رو بر مبنای برند تنظیم کنم اما امکان چیدمان محصولات نشد و مجبوریم که طبق تصویر دسته بندی کنیم میدونم میشه بصورت دستی داخل صفحه category شرط گذاشت که اگه محصول نایک بود فلان تابع category رو فراخوانی کن تا محصولاتش لیست بشه اما من نمیخوام دستی این کار رو انجام بدم و میخوام یک برنامه نویسی انجام بشه تا سیستم خودکار این رو تشخیص بده فکر کنم نتونستم منظورم رو برسونم نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در اردیبهشت 95 گزارش بازنشر ارسال شده در اردیبهشت 95 روشتون اشتباهه روش صحیحش این بود که شما طبقه بندی (Taxonomy) جدا ایجاد می کردی برای برندها اونوقت یک صفحه بایگانی برای هر برند داشتید که محصولات سه دسته اصلی رو داره روش دیگه هم استفاده از زمینه دلخواهه به طور مثال یک زمینه به نام برند ایجاد می کردید و در صفحه بایگانی خروجی رو با اون ست می کردید فرصت بشه یه نمونه کد براتون می گذارم 1 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در اردیبهشت 95 گزارش بازنشر ارسال شده در اردیبهشت 95 این فقط یک نمونه است که اگه درست انجام بشه مشکل شما رو می تونه برطرف کنه ابتدا این کدها رو در فایل functions.php قرار می دید تا طبقه بندی ساخته بشه و مقدار فیلد جستجو برای طبقه بندی شما ست بشه <?php function create_brands_tax() { $labels = array( 'name' => _x( 'Brands', 'Taxonomy General Name', 'fakhar' ), 'singular_name' => _x( 'Brand', 'Taxonomy Singular Name', 'fakhar' ), 'menu_name' => __( 'Brands', 'fakhar' ), 'all_items' => __( 'All Brands', 'fakhar' ), 'parent_item' => __( 'Parent Brand', 'fakhar' ), 'parent_item_colon' => __( 'Parent Brand:', 'fakhar' ), 'new_item_name' => __( 'New Brand Name', 'fakhar' ), 'add_new_item' => __( 'Add New Brand', 'fakhar' ), 'edit_item' => __( 'Edit Brand', 'fakhar' ), 'update_item' => __( 'Update Brand', 'fakhar' ), 'view_item' => __( 'View Brand', 'fakhar' ), 'separate_items_with_commas' => __( 'Separate items with commas', 'fakhar' ), 'add_or_remove_items' => __( 'Add or remove Brands', 'fakhar' ), 'choose_from_most_used' => __( 'Choose from the most used', 'fakhar' ), 'popular_items' => __( 'Popular Brands', 'fakhar' ), 'search_items' => __( 'Search Brands', 'fakhar' ), 'not_found' => __( 'Not Found', 'fakhar' ), 'no_terms' => __( 'No Brands', 'fakhar' ), 'items_list' => __( 'Items list', 'fakhar' ), 'items_list_navigation' => __( 'Items list navigation', 'fakhar' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true, ); register_taxonomy( 'brands', array( 'post' ), $args ); } add_action( 'init', 'create_brands_tax', 0 ); add_action( 'pre_get_posts', 'foo_set_cat_query_by_brands_meta' ); function foo_set_cat_query_by_brands_meta( $query ) { if ( ! is_admin() && $query->is_main_query() && is_search() && isset($_GET['b']) && $_GET['b'] != 'all') { $b = $_GET['b']; $query->set( 'tax_query', array(array('taxonomy' => 'brands','field' => 'term_id','terms' => $b)) ); }} ?> حاللا وقتی از طریق پیشخوان - نوشته ها مراجعه کنید می بینید یک آیتم مثل دسته بندی به نام brands اضافه شده در موقع ارسال مطلب هم دقیقا مثل دسته بندی ها در ستون کناری صفحه است هر برند رو به عنوان یک دسته از برندها معرفی کنید این کدها رو در محل دلخواه سایتتون بگذارید (استایل دهی و موارد جانبی دیگه اش به خودتون و قالبتون مربوط می شه) به عنوان مثال فایل header.php یا footer.php یا sidebar.php <?php if(isset($_GET['b'])) { $mb = $_GET['b']; } else { $mb = 'all'; } if(isset($_GET['cat'])) { $mc = $_GET['cat']; } else { $mc = ''; } if(isset($_GET['s'])) { $ms = $_GET['s']; } else { $ms = ''; } $categories = get_terms('category', array( 'orderby' => 'name', 'parent' => 0 ) ); ?> <form method="get" class="form-horizontal" action="<?php bloginfo('url');?>" id="searchForm"> <p class="form-group has-feedback"><input type="search" name="s" class="form-control" value="<?php echo $ms;?>" placeholder="عبارتی را برای جستجو وارد نمایید"><button type="submit" class="form-control-feedback btn btn-primary" style="padding:inherit;left:0;"><i class="fa fa-search"></i></button></p> <p>دسته مورد نظر را انتخاب نمایید: </p> <div id="parent-catTable"> <ul id="parent-cat"> <?php foreach ( $categories as $category ) { $childs = get_terms('category', array( 'orderby' => 'name', 'parent' => $category->term_id ) ); if ( ! empty( $childs ) && ! is_wp_error( $childs ) ) { echo '<li class="parent"><input type="checkbox" id="cat-'.$category->term_id.'" value="'.$category->term_id.'" name="cat" '; checked($mc, $category->term_id); echo '><strong><label for="cat-'.$category->term_id.'">'.$category->name.'</label></strong>'; echo '<ul class="childscat" id="childOf-'.$category->term_id.'">'; foreach ( $childs as $child ) { echo '<li><label><input name="cat" type="checkbox" value="'.$child->term_id.'" '; checked($mc, $child->term_id); echo '><span>'.$child->name.'</span></label></li>'; } echo '</ul>'; echo '</li>'; } else { echo '<li><label><input name="cat" type="checkbox" value="'.$category->term_id.'"><span>'.$category->name.'</span></label></li>'; } } ?> </ul> </div> <p> برند مورد نظر را انتخاب نمایید</p> <?php $brands = get_terms('brands', array( 'orderby' => 'name', ) ); ?> <div class="brands btn-group" data-toggle="buttons"> <label class="btn btn-default <?php if($mb=='all') echo 'active';?>"><input type="radio" name="b" value="all" <?php checked($mb, 'all');?>>همه برندها</label> <?php foreach ( $brands as $term ) { echo '<label class="btn btn-default'; if($mb == $term->term_id) { echo ' active'; } echo '"><input name="b" type="radio" value="'.$term->term_id.'" '; checked($mb, $term->term_id); echo '><i class="icon-'.$term->term_id.'"></i> '.$term->name.'</label>'; } ?> </div> <script> jQuery(document).ready(function($) { $("#parent-cat").find("ul").find("input:checked").each(function() { $(this).parent("label").parent("li").parent("ul").prev("strong").prev("input").prop("checked", true); }); }); </script> </form> کدها کاملا تست شده درست عمل می کنند مگر اینکه مراحل رو درست انجام نداده باشید 1 نقل قول لینک به ارسال
فرهاد-سئو 905 ارسال شده در اردیبهشت 95 مالک گزارش بازنشر ارسال شده در اردیبهشت 95 استاد خیلی ممنون از لطفتون بله همانطور که فرمودین کار کردش اما من میخواستم سیستم خودکار سرچ کنه و نمایش بده یعنی کوئری بگیره نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در اردیبهشت 95 گزارش بازنشر ارسال شده در اردیبهشت 95 چجوری خودکار؟ به هر حال باید کاربر برند دلخواهش رو انتخاب کنه و الا خود سیستم که نمی تونه خودکار کاری رو انجام بده اگر مشکلتون با فرم جستجوست می تونید فرم رو حذف کنید و مقدار b رو با متد GET ارسال کنید به صفحه بایگانی و در کدهای تابع هم این خط رو بیابید if ( ! is_admin() && $query->is_main_query() && is_search() && isset($_GET['b']) && $_GET['b'] != 'all') { و تغییر بدید به if ( ! is_admin() && $query->is_main_query() && is_category() && isset($_GET['b']) && $_GET['b'] != 'all') { و یا به هر شکل دلخواه دیگه ای شخصی سازیش کنید من اول مطلب عرض کردم این یک نمونه است و شما می تونید ازش برای رسیدن به خواستتون استفاده کنید ... 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .