رفتن به مطلب

مشکل permalink در پست های سفارشی


پست های پیشنهاد شده

سلام

یک پست سفارشی ایجاد کردم که کدهای functions.php به شکل زیر میباشد :


// add prodocts
function products_custom_init() {
$labels = array(
'name' => 'محصولات',
'singular_name' => 'محصول',
'add_new' => 'افزودن محصول',
'add_new_item' => 'افزودن محصول جدید',
'edit_item' => 'ویرایش محصول',
'new_item' => 'محصول جدید',
'all_items' => 'تمام محصولات',
'view_item' => 'مشاهده محصول',
'search_items' => 'جستجوی محصول',
'not_found' => 'محصولی پیدا نشد',
'not_found_in_trash' => 'محصولی در زباله دان پیدا نشد',
'parent_item_colon' => '',
'menu_name' => 'محصولات'
);
$args = array(
'labels' => $labels,
'public' => true,
'show_in_nav_menus' => true, //'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'products'),
'menu_icon' => get_template_directory_uri() . "/img/productsicon.png",
'taxonomies' => array( 'page-category' ),
'show_ui' => true,
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'publicly_queryable' => true,
//'exclude_from_search' => true,
'supports'=> array( 'title', 'editor', 'author', 'thumbnail', 'comments','custom-fields' ),
);
register_post_type( 'products', $args );

}
add_action( 'init', 'products_custom_init' );
function my_rewrite_flush() {
flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'my_rewrite_flush' );
// categories
function my_taxonomies_product() {
// Add new taxonomy, make it hierarchical (like categories)
$labels_category = array(
'name' => _x( 'دسته بندی محصولات', 'taxonomy general name' ),
'singular_name' => _x( 'محصول', 'taxonomy singular name' ),
'search_items' => __( 'جستجوی دسته بندی محصول' ),
'all_items' => __( 'همه دسته بندی ها' ),
'parent_item' => __( 'پدر دسته بندی محصولات' ),
'parent_item_colon' => __( 'پدر دسته بندی محصولات :' ),
'edit_item' => __( 'ویرایش دسته بندی محصولات' ),
'update_item' => __( 'بروزرسانی دسته بندی محصولات' ),
'add_new_item' => __( 'افزودن دسته بندی محصولات' ),
'new_item_name' => __( 'دسته بندی محصولات جدید' ),
'menu_name' => __( 'دسته بندی محصولات' ),
);
$args_category = array(
'labels' => $labels_category,
'hierarchical' => true,
'public' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'products', 'with_front'=> true ),
'capability_type' => 'post',
'has_archive' => true,
'menu_position' =>6,
'args'=> array( 'orderby' => 'term_order' ),
'supports'=> array('title', 'editor', 'author', 'thumbnail', 'comments','custom-fields' ),
);
register_taxonomy( 'product-category', 'products', $args_category );

// Add new taxonomy, NOT hierarchical (like tags)
$labels_tags = array(
'name' => _x( 'برچسب محصولات', 'taxonomy general name' ),
'singular_name' => _x( 'برچسب', 'taxonomy singular name' ),
'search_items' => __( 'جستجوی برچسب محصول' ),
'all_items' => __( 'همه برچسب ها' ),
'edit_item' => __( 'ویرایش برچسب محصولات' ),
'update_item' => __( 'بروزرسانی برچسب محصولات' ),
'add_new_item' => __( 'افزودن برچسب محصولات' ),
'new_item_name' => __( 'برچسب محصولات جدید' ),
'menu_name' => __( 'برچسب محصولات' ),
);
$args_tags = array(
'labels' => $labels_tags,
'hierarchical' => false,
'public' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'products', 'with_front'=> true ),
'capability_type' => 'post',
'has_archive' => true,
'menu_position' =>6,
'supports'=> array( 'thumbnail' ),
);
register_taxonomy( 'product-tags', 'products', $args_tags );
}
add_action( 'init', 'my_taxonomies_product', 0 );

و در داخل صفحه ی اصلیم از هر دسته 4 مطلب محصول آخر رو فراخوانی کردم به این صورت :


<?php
$args = array(
'posts_per_page'=> 4 ,
'tax_query' => array(
array(
'taxonomy' => 'product-category',
'field' => 'slug',
'terms' => 'computer',
),
)
);
$the_query = new WP_Query($args );
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li class="span3 liproducts">'?>
<div class="thumbnail bgnewpro">
<h2><?php the_title();?></h2>
<div>
<?php if(has_post_thumbnail()): ?>
<?php the_post_thumbnail(); ?>
<?php else: ?>
<img src="<?php bloginfo('template_directory') ?>/img/product/computer.png">
<?php endif; ?>
</div>
<p style="text-align:center;margin:10px;"><?php the_meta(); ?></p>
<p style="text-align:left;margin:5px;">

<a href="<?php the_permalink(); ?>" class="btn btn-info">بیشتر</a>
</p>
</div>
<?php echo '</li>'; ?>
<?php
}
} else {
echo 'در حال حاضر هیچ محصولی در این قسمت عرضه نمیشود لطفا مدتی بعد مراجعه نمائید!';
}
/* Restore original Post Data */
wp_reset_postdata();
?>

و کار میکنه ولی وقتی رو ادامه مطلب کلیک میکنم به جای اینکه فایل single-products.php رو فراخوانی کنه

همون صفحه اصلی رو میاره و میگه برگه ای پیدا نشد

ممنون میشم راهنمایی بفرمائید

ویرایش شده توسط Mekaeil Andisheh
لینک به ارسال

ساختار پیوند یکتا به چه شکل هست؟

نمونه؟

http://forum.wp-pars...رشی-پیوند-یکتا/

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

البته من یکسری صفحات هنوز نساختم مثل 404 و category ولی single.php , single-products.php رو ساختم

ویرایش شده توسط Mekaeil Andisheh
لینک به ارسال

سلام

این ساختار فایل single.php یکی از کارهای من هست که از پست سفارشی درش استفاده شده, کد کاملاً روان هست اگر مشکلی بود بفرمایید تا راهنمایی کنم:


<?php
$post = $wp_query->post;
if (in_category('1')) {
include('single_portfolio.php');
}
elseif('library' == get_post_type()) {
include('archive_library.php');
}
else{
include('single_default.php');
}
?>

لینک به ارسال

اکثرا به خاطر درست نبودن ساختار پیوند یکتاست

با حالت دیگری تست کنید

لینک به ارسال

سلام

این ساختار فایل single.php یکی از کارهای من هست که از پست سفارشی درش استفاده شده, کد کاملاً روان هست اگر مشکلی بود بفرمایید تا راهنمایی کنم:


<?php
$post = $wp_query->post;
if (in_category('1')) {
include('single_portfolio.php');
}
elseif('library' == get_post_type()) {
include('archive_library.php');
}
else{
include('single_default.php');
}
?>

ببینید فایل single.php فکر نکنم مشکلی داشته باشه چون برای نوشته های دیگه که پیشفرض وردپرس هست میاره و فقط برای پست های سفارشی صفحه 404 رو میاره

شما به این لینک برید روی گزینه بیشتر جدیدترین محصولات کلیک کنید و بعد در پایین صفحه روی تازه ترین اخبار کلیک کنید صفحه single رو میاره و مشکلی نداره

اکثرا به خاطر درست نبودن ساختار پیوند یکتاست

با حالت دیگری تست کنید

حرف شما رو قبول دارم ولی نمیدونم چه جوری اینکارو انجام بدم

روی نوشته های پیشفرض وردپرس که کلیک میکنم صفحه single .php رو میاره و در آدرس بار هم بعد از آدرس صفحه اسم پست رو میاره ولی در پست های سفارشی

در آدرس بار به این صورته که بعد از آدرس سایت products/postname رو میاره در حالی که روی صفحه 404 هست

لینک به ارسال

با حالت پیوند یکتای دیگری تست کنید

بله حدستون درست بود وقتی حالت پیوند یکتا رو پیشفرض انتخاب کردم درست شد

ولــــــــــــــی

اگه من بخوام در حالت نام نوشته باشه و کار کنه و با خطای 404 روبرو نشه چیکار کنم ؟؟

افزونه ای که در آموزش ها گفتید رو نصب کردم

در قسمت products نوشته :

/products /%postname%

در قسمت

Use custom permalink of custom taxonomy archive. نوشته :

/post_type/taxonomy/term این قسمت رو تیک زده

لینک به ارسال

در فیلد افزونه فقط از %postname% استفاده کنید

بله همین کار رو کردم ولی درست نشد فکر کنم ایراد از وجود این products در آخر آدرسه

شما لطفا این عکس رو ببینید

76309510114093281007.png

ویرایش شده توسط Mekaeil Andisheh
لینک به ارسال

یکی از دوستان گفتند که اگر فایل فانکشم پرمیشن داشته باشه حل میشه متوجه مشدم منظورش چیه ولی پرمیشن فانکشن من به این صورته

64730091503352089702.png

ویرایش شده توسط Mekaeil Andisheh
لینک به ارسال

یکی از دوستان گفتند که اگر فایل فانکشم پرمیشن داشته باشه حل میشه متوجه مشدم منظورش چیه ولی پرمیشن فانکشن من به این صورته

64730091503352089702.png

من عکس شما رو ندیدم

ولی اگر می خواید پیوند یکتا رو تغییر بدید باید فایل function.php شما قابلیت نوشتن رو داشته باشه

من بیشتر به این مورد بر خورد کردم و بدون مشکل حل شده و پیوند یکتا تغییر کرده !

لینک به ارسال

من عکس شما رو ندیدم

ولی اگر می خواید پیوند یکتا رو تغییر بدید باید فایل function.php شما قابلیت نوشتن رو داشته باشه

من بیشتر به این مورد بر خورد کردم و بدون مشکل حل شده و پیوند یکتا تغییر کرده !

خب توی عکس قسمت user قابلیت write رو داره و روی 644 تنظیمه

لینک به ارسال

دسترسی فایل functions چه ارتباطی داره؟

http://gabrieleroman...tom-post-types/

http://codex.wordpre...#Structure_Tags

اوه - اشتباه از من بود فایل .htaccess منظورم بود به اشتباه اسم function رو گفتم :P

اگر دسترسیت کم باشه به این قسمت و بخوای پیوند یکتا رو تغییر بدی معمولا اینطوری میشه -پرمیشن رو بزار 777 ببن جواب میگیری یا نه ؟

لینک به ارسال

اوه - اشتباه از من بود فایل .htaccess منظورم بود به اشتباه اسم function رو گفتم :P

اگر دسترسیت کم باشه به این قسمت و بخوای پیوند یکتا رو تغییر بدی معمولا اینطوری میشه -پرمیشن رو بزار 777 ببن جواب میگیری یا نه ؟

اینکارو کردم متاسفانه جواب نگرفتم

راستی این رو بگم فایل وردپرس من توی یک پوشه ست و من دو تا وردپرس نصب کردم یکیش که توی public html هست و پلاگین comming soon رو توش نصب کردم و اصلیه توی یک پوشه ست که تا وقتی راه اندازی بشه نمایش داده نمیشه

احتمالش هست این مشکل رو درست کرده باشه؟

طبق آموزشهای دوستمون پارسا هم پیش رفتم و دو تا لینک رو هم رفتم و قدم به قدم امتحان کردم ولی مشکل رو حل نکرد نمیدونم چرا فقط توی حالت پیشفرض کار میکنه؟!


function products_custom_init() {
$labels = array(
'name' => _x('محصولات', 'post type general name'),
'singular_name' => _x('محصول', 'post type singular name'),
'add_new' => _x('افزودن محصول', 'Portfolio'),
'add_new_item' => __('افزودن محصول جدید'),
'edit_item' => __('ویرایش محصول'),
'new_item' => __('محصول جدید'),
'all_items' => __('تمام محصولات'),
'view_item' => __('مشاهده محصول'),
'search_items' => __('جستجوی محصول'),
'not_found' => __('محصولی پیدا نشد'),
'not_found_in_trash' => __('محصولی در زباله دان پیدا نشد'),
'parent_item_colon' => '',
'menu_name' =>__('محصولات')

);
$args = array(
'labels' => $labels,
'public' => true,
'show_in_nav_menus' => true, //'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'products'),
'menu_icon' => get_template_directory_uri() . "/img/productsicon.png",
'show_ui' => true,
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'publicly_queryable' => true,
'supports'=> array( 'title', 'editor', 'author', 'thumbnail', 'comments','custom-fields' ),
);
register_post_type( 'products', $args );

}
add_action( 'init', 'products_custom_init' );
function my_rewrite_flush() {
flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'my_rewrite_flush' );

ویرایش شده توسط Mekaeil Andisheh
لینک به ارسال

دوستان عزیزم مشــــــــــــــــــــــــکل حــــــــــــــــــــــــل شد! :D

توی قسمت register taxonomyها که دسته و برچسب رو میسازه رفتم این 'rewrite' => array( 'slug' => 'products', 'with_front'=> true ), رو حذف کردم درست شد

میشه یه نفر توضیح بده چرا؟! هنوز خوب درکش نکردم که این خاصیت چیکار میکنه؟!

لینک به ارسال

با این کد باید درست باشه و البته قبلش باید پیوند یکتا یکبار مجدد ذخیره بشه

 'rewrite' =>  array( 'slug' => 'products')

لینک به ارسال

دوستان عزیز این رو صرفا فقط جهت آموزش و تجربه میگم :

بعد از حل این مشکل به کمک دوستان عزیزم . من به این قانع نشدم و تغییراتی در وبسایتم ایجاد کردم و رفتم به جای یک پست سفارشی چندین پست سفارشی ایجاد کردم و.... و با اشتیاق زیاد که اومدم امتحان کنم با وجود اینکه مشکل رو قبلا حل کرده بودم دوباره همین مشکل ظاهر شد ! چرااا؟؟

به لینک بسیار عالی دوستمون پارسا مراجعه کردم و پیشنهادی که در وب داده بود رو انجام دادم و مشکل شکر خدا حل شد ! خیلی برام جالب بود توی قسمت پیوند یکتا ساختار زیر رو گذاشتم مشکلم حل شد :

Go to Settings → Permalinks and change your current structure to : /%category%/%postname%.

ویرایش شده توسط Mekaeil Andisheh
لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...