এটা বোকা প্রশ্ন মত মনে হচ্ছে। তবে, আমি এটি বুঝতে পারি না :(।
আমাকে বাড়িতে বাটন প্রদর্শন করতে হবে যা কাস্টম পোস্ট_ টাইপের আর্কাইভ ইউআরএল (সংরক্ষণাগার- {post_type}। Php) এ যায়। আমি কেমন করে ঐটি করি?
এটা বোকা প্রশ্ন মত মনে হচ্ছে। তবে, আমি এটি বুঝতে পারি না :(।
আমাকে বাড়িতে বাটন প্রদর্শন করতে হবে যা কাস্টম পোস্ট_ টাইপের আর্কাইভ ইউআরএল (সংরক্ষণাগার- {post_type}। Php) এ যায়। আমি কেমন করে ঐটি করি?
উত্তর:
হাই @ সাইলেন্ট:
দেখা যাচ্ছে ওয়ার্ডপ্রেস ৩.১ এ একটি ফাংশন রয়েছে যা আপনার যা ইচ্ছা ঠিক তা করে এবং এর নামকরণ করা হয় get_post_type_archive_link()
; আপনি কীভাবে এটি কল করবেন ( এখানে একটি কাস্টম পোস্টের ধরণ ধরে নেওয়া 'product'
):
<a href="<?php echo get_post_type_archive_link('product'); ?>">Products</a>
নীচে আমার পূর্ববর্তী উত্তরটি আমি আবিষ্কার করেছি যে ওয়ার্ডপ্রেসটির সত্যই এই ব্যবহারের ক্ষেত্রে বিল্ট-ইন রয়েছে function
ওয়ার্ডপ্রেস ৩.১ এর মূল উত্স কোডে আমি যদি কিছু উপেক্ষা না করি তবে আমি মনে করি আপনি এমন কোনও ফাংশন সন্ধান করছেন get_archive_link()
যা আপনি এর মতো কল করতে পারেন (নাম ধরে নেওয়া কোনও কাস্টম পোস্টের ধরণ ধরে 'product'
):
<a href="<?php echo get_archive_link('product'); ?>">Products</a>
এবং আপনার উত্স কোডটি যা আপনি আপনার থিমের function.php
ফাইল বা .php
একটি প্লাগইন যা আপনি লিখতে পারেন তার জন্য একটি ফাইলে রাখতে পারেন:
if (!function_exists('get_archive_link')) {
function get_archive_link( $post_type ) {
global $wp_post_types;
$archive_link = false;
if (isset($wp_post_types[$post_type])) {
$wp_post_type = $wp_post_types[$post_type];
if ($wp_post_type->publicly_queryable)
if ($wp_post_type->has_archive && $wp_post_type->has_archive!==true)
$slug = $wp_post_type->has_archive;
else if (isset($wp_post_type->rewrite['slug']))
$slug = $wp_post_type->rewrite['slug'];
else
$slug = $post_type;
$archive_link = get_option( 'siteurl' ) . "/{$slug}/";
}
return apply_filters( 'archive_link', $archive_link, $post_type );
}
}
উইকএন্ডে আমি আসলে এই সঠিক যুক্তি নিয়ে কাজ করছিলাম যদিও আমি এখনও 100% নিশ্চিত নই যে ওয়ার্ডপ্রেস দেখতে পাবে যে এটি সম্ভবত কোনও নির্দিষ্ট সাইটের জন্য কার্যকর হবে যদিও সমস্ত ব্যবহারের ক্ষেত্রে লজিকের ক্রমটি সাধারণভাবে সঠিক।
ট্র্যাকের মাধ্যমে ওয়ার্ডপ্রেসে যুক্ত করার পরামর্শ দেওয়াও এটি দুর্দান্ত কাজ, যা আমি মনে করি এই সন্ধ্যায় পরে করব।
আপনি যখন পোস্টের রেজিস্ট্রেশন করেন আপনি "has_archive" প্যারামিটার সহ স্লাগ হিসাবে একটি স্ট্রিং পাস করতে পারেন এবং নিশ্চিত করতে পারেন যে আপনি আবার সত্য বা একটি অ্যারেতেও পুনর্লিখন সেট করেছেন তবে মিথ্যা নয় এবং তারপরে আপনার সিপিটি সংরক্ষণাগার URL হবে http://www.YOURDOMAIN.com উদাহরণস্বরূপ / has_archive_slug
যদি আপনি আপনার রেজিস্টার_পস্ট_ টাইপ উদাহরণস্বরূপ সেট করেন:
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => 'product',
'capability_type' => 'post',
'has_archive' => 'products',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','author','thumbnail','excerpt','comments')
);
register_post_type('product',$args);
তারপরে আপনার একক url হ'ল: http://www.YOURDOMAIN.com/product/postName এবং আপনার সংরক্ষণাগার ইউআরএল: http://www.YOURDOMAIN.com/products/
has_archive
বুলিয়ান ভাবতাম , তবে এখন আমি জানি এটি একটি স্ট্রিং দেওয়া যেতে পারে, তাই আমার একক কাস্টম পোস্ট ধরণের recipe
বহুবচন থাকতে পারে/recipes/
'rewrite'
কেবলমাত্র বুলিয়ান বা অ্যারের মান গ্রহণ করে। 'rewrite' => 'product',
আপনি তালিকাবদ্ধ করেছেন তার চেয়ে এটি পরিবর্তে হওয়া উচিত 'rewrite' => array( 'slug' => 'product' ),
।
yoursite.com/type-slug
আপনি যদি অন্য কোনও কিছুতে স্পষ্ট করে সেট না করেন তবে যেমন।yoursite.com/some-other-url
..