কীভাবে আমার সাইটে সমস্ত বিভাগের একটি পৃষ্ঠাবদ্ধ তালিকা তৈরি করবেন?


9

আমি পৃষ্ঠাগুলি সহ একটি সংরক্ষণাগার পৃষ্ঠাটি প্রদর্শন করতে চাই যা আমার সাইটে সমস্ত বিভাগের তালিকা করে এবং প্রতিটি লিঙ্কটি সেই নির্দিষ্ট বিভাগের সংরক্ষণাগার পৃষ্ঠায় যায়। সুতরাং এটি বিভাগ আর্কাইভের সংরক্ষণাগার পৃষ্ঠার মতো হবে।

আমার সাইটের প্রতিটি বিভাগে বিভাগের পারমিলিংকের সাথে মেলে ম্যানুয়ালি তৈরি একটি কাস্টম থাম্বনেল রয়েছে। সমস্ত বিভাগ প্রদর্শন করার জন্য আমার ইতিমধ্যে একটি বিন্যাস সেটআপ আছে তবে আমি এটি একটি কাস্টম পৃষ্ঠার টেম্পলেট দিয়ে করছি, যাতে কোনও পৃষ্ঠা নেই। এর অর্থ সমস্ত বিভাগগুলি একক পৃষ্ঠায় প্রদর্শিত হবে যা একটি বিরক্তিকর (আমার 100+ বিভাগ রয়েছে)।

আমার বর্তমান সংরক্ষণাগারটি নির্দিষ্ট কাস্টম পৃষ্ঠার টেম্পলেট নামের সাথে সেটআপ করা হয়েছে page-catlist.phpতবে আমি এটিকে অন্য যে কোনও ধরণের টেম্পলেট ফাইলে পরিবর্তন করতে ইচ্ছুক।

আমি এখানে একটি পৃষ্ঠাতে সমস্ত বিভাগ আউটপুট ব্যবহার করতে বর্তমান কোডটি ব্যবহার করছি:

$args = array(
  'orderby' => 'name',
  'order' => 'ASC'
);
$cats      = get_categories( $args );
$thm_pre   = 'http://example.com/images/thumbs/';
$thm_end   = '.png';

foreach($cats as $cat) {
    $thumbnail = $thm_pre.$cat->slug.$thm_end;
    // output the loop HTML here
    // basically a list of category names & thumbs 
    // all linked to the cat URL by get_category_link()
}

আমি আশা করছি এটি করার আরও ভাল উপায় আছে যাতে আমি প্রাকৃতিক পৃষ্ঠাগুলি যুক্ত করতে পারি, আদর্শভাবে ডাব্লুপি-পেজনাভি দিয়ে। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে!


এটি অনেক প্রচেষ্টা হতে পারে;)
সুমিত

@ সুমিত এটি কোনওরকম প্রচেষ্টা ছাড়াই আসলে বেশ সহজ ;-)
পিটার গুসেন

উত্তর:


2

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

আমাদের প্রয়োজন দেখুন

  • পদ পরিমাণ

  • প্রতি পৃষ্ঠায় শর্তের পরিমাণ

  • get_terms()( কেবলমাত্র মনে রাখবেন, get_terms()৪.৪ সংস্করণে এর ব্যবহারের পরিবর্তন হয়েছে )। আপনি get_categories()যদি চান তবে এটি ব্যবহার করতে পারেন get_categories()এটি কেবল একটি র‍্যাপার ফাংশনget_terms()

সুতরাং প্রথমে আমাদের শর্তগুলির পরিমাণ গণনা করতে হবে। এর জন্য, আমরা countপ্যারামিটারটি ব্যবহার করবget_terms()

বিঃদ্রঃ:

  • সমস্ত কোড নিরীক্ষিত এবং কমপক্ষে প্রয়োজন

    • পিএইচপি 5.4

    • ওয়ার্ডপ্রেস 4.5

আপনি এটি পিএইচপি এবং ওয়ার্ডপ্রেসের পুরানো সংস্করণগুলির সাথে সহজেই কাজ করতে রূপান্তর করতে পারেন

$taxonomy   = 'category';
$term_count = get_terms( 
    [
        'taxonomy'  => $taxonomy,
        'fields'    => 'count'
    ]
);

এখন যেহেতু আমরা শর্তাবলীর পরিমাণ জানি, আমরা প্রতি পৃষ্ঠায় আমাদের প্রয়োজনীয় পরিমাণের পরিমাণ নির্ধারণ করতে পারি, 10 বলি

$terms_per_page = 10;

উপরের দিক থেকে, এখন আমরা কত পৃষ্ঠাগুলি করব তা নিয়ে কাজ করতে পারি। এখানকার মানটি আপনার ক্ষেত্রে, পৃষ্ঠায়িতকরণের ফাংশনটির জন্য প্রয়োজনীয়টি প্রেরণ করা হবেwp_pagenavi()

$max_num_pages = ceil( $term_count/$terms_per_page );

এই ক্ষেত্রে, আপনি $max_num_pagesআপনার পৃষ্ঠাবদ্ধকরণ ফাংশনটি পাস করবেন

পরের অংশটি আমাদের অফসেটটি গণনা করা হবে। আমরা কেবল জিনিসগুলি অপটিমাইজ রাখার জন্য প্রতি পৃষ্ঠায় শর্তাদি সম্পর্কিত পরিমাণ পুনরুদ্ধার করতে চাই। আমাদের প্রতি পৃষ্ঠায় সমস্ত 100+ পদ প্রয়োজন নেই। শুধুমাত্র প্রয়োজনীয় 10 টি অনুসন্ধান করা খুব দ্রুত। সুতরাং, আমাদের জানা উচিত যে আমরা কোন পৃষ্ঠায় রয়েছি, সেখান থেকে, আমরা একটি অফসেট গণনা করব। এটি পাস হয়ে যাবে এবং প্রাথমিক শুরুর দিক থেকে কয়টি শর্ত বাদ দিতে get_terms()হবে তা জানাবে get_terms()

একবার এটি হয়ে গেলে, আমাদের অবশ্যই get_terms()10 টি শর্ত ফেরত দিতে হবে । এই টুকরা জন্য কোড তাকান

$current_page = get_query_var( 'paged', 1 ); // Change to 'page' for static front page
$offset       = ( $terms_per_page * $current_page ) - $terms_per_page;
$terms        = get_terms(
    [
        'taxonomy' => $taxonomy,
        'order'    => 'ASC',
        'orderby'  => 'name',
        'number'   => $terms_per_page,
        'offset'   => $offset
    ]
);

পৃষ্ঠা পৃষ্ঠা অনুযায়ী আপনার পৃষ্ঠাতে কেবল 10 টি পদ থাকবে। আপনি এখন আপনার শর্তাবলী মাধ্যমে সাধারণত লুপ করতে পারেন

কেবল একটি নোট, আপনি নিশ্চিত করতে চাইবেন যে আপনার get_terms()কার্য থেকে শর্তগুলি আসলে ফিরে এসেছে ।


কুল;) তবে আমি কীভাবে প্যাজিনেশন মার্কআপ তৈরি করব? wp_pagnavi()এই ক্ষেত্রে সত্যিই কাজ করবে?
সুমিত

1
@ সুমিত এটির সাথে কাজ করবে next_posts_link(), previous_posts_link()এবং paginate_links()। এটি এমন কোনও পেজিং ফাংশনটির সাথেও কাজ করবে যেখানে আপনি এখানে আমার পেজিং ফাংশনের মতো ফাংশনটিতে একটি পূর্ণসংখ্যার মান পাস করতে পারেন । যতদূর wp_pagenavi(), আমি হ্যাঁ বা না বলতে পারি না কারণ এই ফাংশনটি কীভাবে কাজ করে তা সম্পর্কে আমার কোনও ধারণা নেই, আপনার এটি পরীক্ষা করে নেওয়া দরকার। উপরের আমার কোডে, $max_num_pagesপৃষ্ঠাগুলির পরিমাণ ধারণ করে, এটি একটি পূর্ণসংখ্যার মান, এটি এই পরিবর্তনশীল যা আপনার পৃষ্ঠাগুলি গণনা করার জন্য ফাংশনগুলিতে পাস করতে হবে
পিটার গুসেন

1
আপনি এবং @ সিজেবিজে উভয়ের জন্য বিশেষ ধন্যবাদ হিসাবে আমি মনে করি যে এই উভয় সমাধান অবশ্যই কার্যকর হতে পারে। আশেপাশে দেখার পরে আমি কিছু ডাব্লুপি-পেজনাভি স্টাফ পেয়েছি যা এটি কীভাবে কাজ করতে পারে তা ব্যাখ্যা করে ... নিশ্চিত যে কোনও কাস্টম প্যাজিনেশন রোল করা সর্বদা সম্ভব তাই আমার মনে হয় এই সমাধানগুলি সবচেয়ে ভাল।
gelleproductions

1

আমি ডাব্লুপি-পেজনাভির সাথে পরিচিত নই, তবে আমার সন্দেহ হয় যে এটি পোস্টগুলির সাথে লেনদেন করছে বলে মনে হচ্ছে, তাই আপনি যদি এটি আপনার নিজের মতো লুপে ব্যবহার করেন তবে এটি সহজেই স্ক্রু হয়ে যেতে পারে। সম্ভবত CSS এখনও আপনার এইচটিএমএল স্টাইল করতে সহায়ক হতে পারে। যাইহোক, আপনার নিজস্ব পৃষ্ঠাগুলি সেট আপ করা এতটা কঠিন নয়।

প্রথমত, আপনার কতগুলি বিভাগ রয়েছে তা জানতে হবে:

$cat_amounts=count($cats);

পরবর্তী আপনি পৃষ্ঠা প্রতি কত আইটেম চান তা নির্ধারণ করতে হবে:

$cats_per_page=20;

এটি আপনাকে পৃষ্ঠাগুলির পরিমাণ দেবে:

$max_pages=ceil($cat_amounts/$cats_per_page);

আপনার প্রয়োজনীয় তথ্যের তৃতীয় অংশটি আপনি যে পৃষ্ঠাটিতে রয়েছেন তা হ'ল। আপনি একটি প্রবর্তন করে এটি ট্র্যাক রাখতে পারেনquery_varআপনার ইউআরএল তারপরে এমন কিছু দেখতে পাবেন:www.example.com/yourcatpage?catpage=2

লুপটি শুরু করার আগে, আপনাকে জানতে হবে কোন পৃষ্ঠাটি বলা হয়:

$page_called=get_query_var ( $catpage, 1 )

এটি থেকে আপনি যে প্রথম উপাদানটি প্রদর্শন করতে চান তা কল করতে পারেন:

$first_element=($page_called-1)*$cats_per_page)

এবং সর্বশেষটি:

$last_element=$page_called*$cats_per_page-1;

শেষ পৃষ্ঠায় $cats_per_pageবিভাগগুলির চেয়ে কম থাকতে পারে , সুতরাং অতিরিক্তভাবে আপনার প্রয়োজন:

if ($last_element > $cat_amounts) $last_element = $cat_amounts;

এখন, এর পছন্দসই উপাদানগুলির মধ্য দিয়ে লুপ করুন $cats:

for ($i=$first_element;$i=<$last_element;$i++) {
    //do your thing with $cats[$i];
}

লুপের পরে আপনি পূর্ববর্তী / পরবর্তী ট্যাগগুলি তৈরি করতে বা অন্যান্য ধরণের নেভিগেশন করতে ভেরিয়েবলগুলি ব্যবহার করতে পারেন।

সাবধান থাকুন যে আমি আসলে এই কোডটি পরীক্ষা করি নি। অ্যারেতে প্রথম এলিমেন্টটির কী 0 রয়েছে তা বিবেচনায় নেওয়ার সময় আমি কিছু ভুল করেছি।


অনেক সহজ পদ্ধতির রয়েছে যা পরিষ্কার এবং দ্রুত ;-)
পিটার গুজন

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