বছর এবং মাস অনুসারে কাস্টম পোস্ট প্রকারের সংরক্ষণাগারগুলি?


17

বছর এবং মাস অনুসারে আপনি কোনও কাস্টম পোস্ট প্রকারের সংরক্ষণাগারগুলি কীভাবে প্রদর্শন করবেন?


নীচের আমার সমাধানটি যদি আপনি <ডাব্লুপি 4.4 ব্যবহার করে তবে কাজ করে তবে ডাব্লুপি 4.4 প্রকাশের পর থেকে, wp_get_archives () শেষ পর্যন্ত কাস্টম পোস্টের প্রকারগুলি সমর্থন করে: ডেভেলপার.ওয়ার্ডপ্রেস.অর্গ
ট্রেভর

উত্তর:


17

হ্যা, তুমি পারো. আপনার যা দরকার তা হল ফিল্টার তৈরি করা wp_get_archives();যাতে এটি post_typeপরামিতি গ্রহণ করে :

function my_custom_post_type_archive_where($where,$args){  
    $post_type  = isset($args['post_type'])  ? $args['post_type']  : 'post';  
    $where = "WHERE post_type = '$post_type' AND post_status = 'publish'";
    return $where;  
}

তারপরে এটিকে কল করুন:

add_filter( 'getarchives_where','my_custom_post_type_archive_where',10,2);

আপনি যখনই কাস্টম পোস্ট ধরণের মাধ্যমে সংরক্ষণাগার প্রদর্শন করতে চান, কেবল পোস্ট_ টাইপ আরোগুলি পাস করুন:

$args = array(
    'post_type'    => 'your_custom_post_type',
    'type'         => 'monthly',
    'echo'         => 0
);
echo '<ul>'.wp_get_archives($args).'</ul>';

3
আপনি কি এই সমাধান চেষ্টা করেছেন? এটি আপনার সিপিটি থেকে একটি পোস্ট এবং পোস্টের সংখ্যা সহ মাসের তালিকাটি সঠিকভাবে এনেছে তবে লিঙ্কগুলি অকেজো। এগুলি ক্লিক করা আপনাকে সিপিটির জন্য নয়, পুরো সাইটের জন্য মাসে নিয়ে যায়।
জার্কার্ক

কিছু খনন করার পরে (নীচে টম নওলের উত্তর দেখুন), আমি কাস্টম পোস্ট ধরণের জন্য মাসিক সংরক্ষণাগার ছেড়েছি। পরিবর্তে, আমি একটি পোস্ট বিভাগ ব্যবহার করেছি, এবং আমার পারমালিঙ্ক কাঠামোটিকে পরিবর্তন করেছি /%category%/%year%/%monthnum%/%postname%/। তারপরে, /%category%/কেবলমাত্র তারিখের পরিবর্তে শুরু করার জন্য লিঙ্কগুলি সংশোধন করে উপরের মতো অনুরূপ হুক ব্যবহার করা সম্ভব হতে পারে ।
কেভিন সি

এ নিয়ে প্রশ্ন। এটি এর মতো ইউআরএল তৈরি করে: mysite.com/2013/04তবে এটি 404 এর দিকে নিয়ে যায় The কাস্টম পোস্টের ধরণটি এখানে পাওয়া যায়: mysite.com/catsযা আমাকে mysite.com/cats/2013/04ভাবায় যে লিঙ্কটি কী হওয়া উচিত, তবে এটি 404-র সমাধানও করে। আপনি কীভাবে সংরক্ষণাগার লিঙ্কগুলি পাবেন?
gaoshan88

2
আরও ভাল, অবশেষে ওয়ার্ডপ্রেসে এই হারিয়ে যাওয়া কার্যকারিতাটি মোকাবেলা করার জন্য প্লাগইন রয়েছে। এটি একটি মূল অবদানকারী তৈরি করেছেন যা মূলটিতে এই সমস্যাটি সমাধান করার চেষ্টা করছে। সমস্যাটির মূলটিতে সঠিকভাবে সম্বোধন না করা পর্যন্ত প্লাগইন আমাদের সরবরাহ করার জন্য সরবরাহ করা হয়। wordpress.org/plugins/archives-for-custom-post-types
ট্রেভর

6

আপনি করবেন না, ওয়ার্ডপ্রেস বিকাশকারীদের অফিশিয়াল লাইনটি হ'ল কাস্টম পোস্ট টাইপগুলি সাধারণ সাধারণ পোস্টগুলির কাজ করার উদ্দেশ্যে নয় এবং যদি আপনার খেজুরের সংরক্ষণাগার ইত্যাদির প্রয়োজন হয় তবে আপনি জিনিসগুলি সঠিকভাবে করছেন না, এবং আপনি পোস্ট ফর্ম্যাট ইত্যাদি ব্যবহার করা ভাল ..

কাস্টম পোস্টের প্রকারগুলি ওয়েব অ্যাপ্লিকেশন ইত্যাদির জন্য, যদিও এমন কোনও কাস্টম পোস্ট টাইপ সেটআপ করার মতো যা কিছু ভিন্ন নামে সেকেন্ডারি বা সমান্তরাল ব্লগ হিসাবে কাজ করে, যেমন ব্লগ বনাম নিউজ, একই ক্ষমতা সহ, বৈশিষ্ট্যটি যা ছিল তা নয় এর উদ্দেশ্যে, এবং এর বাস্তবায়ন থেকে উদ্ভূত অন্যান্য প্রযুক্তিগত সমস্যার অর্থ হবে।

আপনি যদি এখনও এই বিষয়ে জেদ করে থাকেন, এবং কেবল কাস্টম ট্যাক্সনোমিজ এবং পোস্ট ফর্ম্যাটগুলি ব্যবহার করা যথেষ্ট না হয় তবে আপনি ফাংশন.ফেপগুলিতে পুনর্লিখনের বিধিগুলি যোগ করতে পারেন এবং পোস্ট URL সংরক্ষণাগার পৃষ্ঠায় নির্দিষ্ট URLগুলিতে বছর / মাস সংরক্ষণাগার পুনর্নির্দেশ করতে পারেন এবং তারপরে কাস্টমটি পরীক্ষা করে দেখুন আপনি যদি আপনার পুনর্লিখনের নিয়মে ভেরিয়েবল নির্দিষ্ট করে থাকেন এবং উপযুক্ত মানগুলি সেট করার জন্য আপনার পুনর্লিখনের নিয়মে নিশ্চিত হয়ে থাকেন তবে কোনও সংরক্ষণাগার পৃষ্ঠা পোস্ট করুন।


এটি কিছুটা অদ্ভুত বলে মনে হচ্ছে যে তারা কেবল এই কার্যকারিতা সহ এতদূর যেতে পারত। কাস্টম পোস্টগুলি কীভাবে ব্যবহার করা উচিত তার একটি উদাহরণ আপনি দিতে পারেন?
ড্যান লি

পৃষ্ঠাগুলি এবং ব্লগ পোস্টগুলির স্কোপ দ্বারা আচ্ছাদিত নয় এমন কোনও কিছুর জন্য কাস্টম পোস্টগুলি ব্যবহার করা উচিত (বা ব্লগ পোস্টগুলি ভিন্ন নামের সাথে তবে একইভাবে কাজ করে, যেমন নিবন্ধ / সংবাদ / ডায়েরি / ইত্যাদি) কাস্টম পোস্টগুলির সঠিক ব্যবহারের উদাহরণগুলির মধ্যে রয়েছে : ইভেন্টস, মেনুগুলি, অবস্থানগুলি, ফর্মগুলি, লগগুলি ইত্যাদি
টম জে নোয়েল

কাস্টম পোস্টগুলি মূলত ওয়েব অ্যাপ্লিকেশন উত্পাদন করার মাধ্যম, এগুলি সহজ সম্পাদনা করার জন্য ব্যাকএন্ডে পোস্ট মেনুটিকে নকল করার মাধ্যম নয় (এবং এই জাতীয় ব্যবহারের ফলে ওয়ার্ডপ্রেসটি অনেক ধীর হয়ে যায় এবং আপনি যে কাজটি বুঝতে চান তার চেয়ে বেশি কাজ করে)
টম জে নওয়েল

1
UUUUUgh। ট্র্যাজিক্যালি এটি প্রশ্নের সঠিক উত্তর। আমি বিশ্বাস করতে পারি না যে উপরের ব্যাখ্যাটি "" আমাদের সিপিটিগুলির জন্য তারিখের ইউআরএল থাকা উচিত নয় "এর উপর ভিত্তি করে, যদিও এটি প্রায় নিশ্চিতভাবেই" সিপিটিগুলির জন্য তারিখের ইউআরএলগুলি অত্যন্ত জটিল "যা বাস্তবায়ন না করার প্রকৃত সিদ্ধান্তকে চালিত করছে। পরিষ্কারভাবেই এমন কেস রয়েছে যেখানে লোকেরা কাস্টম পোস্টের ধরণের জন্য তারিখ সংরক্ষণাগারগুলি চাইবে, আপনি পোস্ট ফর্ম্যাটগুলি দেখিয়ে সেই স্পষ্ট ইচ্ছাটি বিলুপ্ত করতে পারবেন না।
জার্কার্ক

1
আমার দৃ strongly়ভাবে একমত হতে হবে না। কাস্টম পোস্টের ধরণগুলি আপনি যা ব্যবহার করতে চান তার জন্য ব্যবহার করার জন্য বোঝানো হয়েছে, কোডেক্সে কোথাও নেই যে তারা "ওয়েব অ্যাপস" এর জন্য বলে are এছাড়াও, আপনার খুব ভালভাবে একটি "নিউজ" বিভাগের প্রয়োজন হতে পারে যার নিজস্ব কাস্টম টেকনোমি রয়েছে এবং আপনি সেইগুলির জন্য সংরক্ষণাগার চাইবেন। বা এমনকি প্রস্তাবিত "ইভেন্ট" টাইপ, যা আমি সম্মত তা সিপিটি-র জন্য উপযুক্ত ব্যবহার, তবে আবার সহজেই তারিখ ভিত্তিক সংরক্ষণাগারগুলির প্রয়োজন হতে পারে।
ট্রেভর

5

সম্পাদনা করুন -> যদিও উত্তরটি এখনও <WP4.4 এর জন্য কাজ করে, যেহেতু কাস্টম পোস্ট প্রকারের জন্য ৪.৪ সমর্থন এখন অন্তর্ভুক্ত করা হয়েছেwp_get_archives()


ওয়ার্ডপ্রেসে কাস্টম পোস্ট প্রকারের তারিখ ভিত্তিক সংরক্ষণাগারগুলির জন্য অবশেষে একটি সহজ, দ্রুত এবং সহজ সমাধান রয়েছে! এটি দীর্ঘকাল ধরে চলে আসা সমস্যা ছিল যা ডাব্লুপি কোর ট্রাকে এখানে লিপিবদ্ধ করা হয়েছে

এটি এখনও সমাধান করা যায় নি তবে ট্র্যাকের অবদানকারীদের মধ্যে একটি গিটহাবে একটি সাধারণ প্লাগইন পোস্ট করেছে যা আপনাকে সিপিটি-র জন্য তারিখ ভিত্তিক সংরক্ষণাগার রাখতে সক্ষম করবে।

এই প্লাগইনটি ইনস্টল করার পরে, বা ম্যানুয়ালি আপনার ফাংশনগুলির জন্য কোড যুক্ত করার পরে আপনি সিপিটিগুলির জন্য সংরক্ষণাগারগুলি যেমন ব্যবহার করেন:

<?php wp_get_archives_cpt( 'post_type=custom_post_type' ); ?>

নোট করুন এই নতুন ফাংশনটি wp_get_archives_cptস্ট্যান্ডার্ডের মতোই কাজ করে wp_get_archivesযাতে আপনি এটি যে কোনও নিয়মিত আর্গুমেন্ট গ্রহণ করেন তা ব্যবহার করতে পারেন। তবে এটি কেবল আপনার পছন্দসই পোস্টের নামের নামের যুক্তি যুক্ত করতে সক্ষম করার ক্ষমতা যোগ করে adds


2

দুঃখিত, তাইকেনের উত্তরে এটি যুক্ত করার পক্ষে যথেষ্ট খ্যাতি নেই।

তবে এটি যুক্ত করতে চেয়েছিলেন যে তার উত্তরটি আমার পক্ষে কাজ করেছে, তবে লিঙ্কগুলি 'লোকালহোস্ট / তারিখ / 2010' ফর্ম্যাটে ছিল। যেখানে আমার 'লোকালহোস্ট / পোস্টস্লাগ / 2010' ফর্ম্যাট দরকার। আমি wp_get_archives এর আউটপুটটিতে স্ট্রিং প্রতিস্থাপন ব্যবহার করে এটি ঠিক করতে সক্ষম হয়েছি।

সুতরাং কীভাবে আপনার পারমালিঙ্কস সেট করা আছে তার উপর নির্ভর করে এই কোডটি 404 টি সমস্যার সমাধান করবে এবং লিঙ্কগুলিকে কাস্টম পোস্ট ধরণের পারমালিঙ্ক কাঠামোটিতে পুনর্নির্দেশ করবে:

$yearly_archive = wp_get_archives(array( 'type' => 'yearly', 'post_type' => '<your post type name>', 'echo' => '0') );
$blog_url = get_bloginfo('url');
echo str_replace(($blog_url . '/date'), ($blog_url . '<your post type slug>'),$yearly_archive);

1

টাকিয়েনের পোস্টে যুক্ত করা যায় না তাই এখানে আমি যা করতে পেরেছি তা এখানে:

থিমের functions.php

add_action('init', 'my_year_archive_rewrites');  
function my_year_archive_rewrites() {   
    add_rewrite_rule('resource/news/([0-9]{4})/page/?([0-9]{1,})/?', 'index.php?post_type=news&year=$matches[1]&paged=$matches[2]', 'top');
    add_rewrite_rule('resource/news/([0-9]{4})/?', 'index.php?post_type=news&year=$matches[1]', 'top');
}

add_filter('getarchives_where', 'my_custom_post_type_archive_where', 10, 2);
function my_custom_post_type_archive_where($where,$args){  
    $post_type = isset($args['post_type']) ? $args['post_type'] : 'post';  
    return "WHERE post_type = '$post_type' AND post_status = 'publish'";
}

add_filter('year_link', 'my_year_link');
function my_year_link($link) {
    global $wp_rewrite;

    if(true) { // however you determine what archive you want
        $link = str_replace($wp_rewrite->front, '/resource/news/', $link);
    }

    return $link;
}

কল করা wp_get_archives ()

wp_get_archives(array('post_type'=>'news', 'type'=>'yearly'));

দেখুন আপনার প্রথম উত্তর। প্রশ্নের উত্তর দেওয়ার সময় একটি টিপস, কেবল কোড বা সেই বিষয়ে লিঙ্ক যুক্ত করবেন না। যদিও আপনার কোডটি কার্যকর হতে পারে, আপনার কোডটি কী করে এবং এটি কেন কাজ করা উচিত তা জেনে সর্বদা চমৎকার। অন্যথায় আপনার উত্তরটি সুন্দরভাবে ফরম্যাটেড। এর জন্য +1
পিটার গুজন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.