সাইডবার উইজেটগুলিতে কাস্টম পোস্টের ধরণের ডেটা?


10

(দ্রষ্টব্য: এই প্রশ্নটি মূলত কাস্টম ক্ষেত্রগুলি সম্পর্কেই ছিল, তবে @ মাইকচিনকেলে কাস্টম পোস্টের প্রকারের সাথে আরও ভাল সমাধান রয়েছে)

আমার সাইটে আমার বেশ কয়েকটি পৃষ্ঠাগুলি রয়েছে যা আমি একই তথ্য সাইডবারে প্রদর্শন করতে চাই। উদাহরণস্বরূপ, এই জাতীয় কাঠামোতে:

-Home
-Cars 
 -Volvo 850 overview 
 -Volvo 850 tech spec 
 -Volvo 850 pictures
 -Porsche 911 overview
 -Porsche 911 tech spec
 -Porsche 911 pictures
-Roads 
 -Route 66 overview 
 -Route 66 history 
 -Route 66 pictures
 -Pan-American Highway overview
 -Pan-American Highway history
 -Pan-American Highway pictures

আমি সমস্ত ভলভো 850 পৃষ্ঠাগুলি সাইডবারে একই তথ্য দেখানোর জন্য, সমস্ত পোর্শ পৃষ্ঠাগুলিতে আলাদা আলাদা ডেটা প্রদর্শন করতে চাই (উদাহরণস্বরূপ গতি, মেকার, ইত্যাদি)।

রোড পৃষ্ঠাগুলিতে প্রতিটি রাস্তার জন্য তাদের নিজস্ব সেট ডেটা থাকবে। গাড়ি এবং রাস্তাগুলির নিজস্ব পৃষ্ঠা টেমপ্লেটও থাকবে এবং আমি যেভাবে এটি ডান পাশেরবারটি পাব তা সাইডবারের মধ্যে এই জাতীয় কিছু।

if ( is_page_template('car-profile-template.php') ) :
// show car widgets

এখানে একটি উদাহরণ পৃষ্ঠা, ভলভো 850 ছবি পৃষ্ঠা। একই (বাম) সাইডবারটি অন্যান্য ভলভো 850 পৃষ্ঠায় উপস্থিত হওয়া উচিত, যখন ডানদিকে থাকা জিনিসপত্র কেবল পৃষ্ঠার সামগ্রী।

|  Home   Cars   Roads                                |
--------------------------------------------------------
|   Overview     |     Volvo 840 Pictures              |
|   Tech Spec    |    (some pics)                      |
|  Pictures     |                                     |
------------------                                     |
| -Specs-        |                                     |
| Volvo 850      |                                     |
| Speed:150mph   |                                     |
| Maker:Volvo    |                                     |  
| Download PDF   |                                     |
------------------                                     |
| -Rating-       |                                     |
| Style:3        |                                     |
| Safety:5       |                                     |
| Reliablity:4   |                                     |
------------------                                     |

এই উদাহরণে, দুটি সাইডবার উইজেটস, স্পেকস এবং রেটিং কোনও কাস্টম পোস্ট প্রকার থেকে তাদের তথ্য পাওয়া উচিত। এমন কোনও পদ্ধতি আছে, যা শেষ-ব্যবহারকারীর পক্ষে সম্পাদনা করা সহজ হবে, যার অর্থ তাদের কেবলমাত্র একবার এই কাস্টম ডেটা প্রবেশ করতে হবে? প্রতিটি ক্ষেত্র পৃথক হওয়া প্রয়োজন হতে পারে না (অর্থাত্ স্পেসের সমস্তগুলি একটি সম্পাদকের ক্ষেত্রে প্রবেশ করা যেতে পারে, এবং রেটিংয়ের সমস্ত অংশই উদ্ধৃতি ক্ষেত্রের মধ্যে রাখা যেতে পারে ..)


2
দুর্দান্ত প্রশ্ন এবং আপনার শিরোনাম সম্পাদনা এবং স্পষ্টতার জন্য প্রশ্ন বিষয়বস্তুটিকে সত্যই প্রশংসা করেছে; এটি ভবিষ্যতে একই ধরণের প্রশ্ন থাকা অন্যদের সহায়তা করবে।
মাইকচিন্কেল

উত্তর:


14

হালনাগাদ:

প্রশ্নের আপডেটের ভিত্তিতে আমার মনে হয় যে আমার স্পষ্টভাবে বলতে হবে যে প্রশ্নে যা জিজ্ঞাসা করা হয়েছে তা নীচের উত্তর দিয়ে করা যেতে পারে, আপনি যে আইটেমের উপরে প্রদর্শিত হতে চান তার প্রতিটি "কার" কাস্টম পোস্ট টাইপের কাস্টম ক্ষেত্রগুলি ব্যবহৃত হয়েছে প্রদত্ত গাড়ির জন্য সমস্ত পৃষ্ঠা

আপনি যদি এটি করতে চান তবে কেবল single-car.phpনীচে অন্তর্ভুক্ত টেম্পলেট ফাইলটিতে সাইডবারটি হার্ডকোড করুন এবং তারপরে ifবিভিন্ন ইউআরএলগুলির জন্য কোন সামগ্রী প্রদর্শিত হবে তা নির্ধারণ করতে আপনার বিবৃতিটি ব্যবহার করুন । আপনি আপনার সাইডবারটি উইজেট করতে এবং একটি কাস্টম উইজেট বিকাশের প্রচেষ্টাতে যেতে পারেন যেখানে বর্তমান পোস্ট আইডির জন্য উইজেট তথ্যটি টানতে পারে, তবে আপনি যদি অন্য ব্যক্তিদের ব্যবহারের থিম হিসাবে এটি তৈরি না করেন তবে উভয়ই কেন?

এটি সম্পাদন করার জন্য বিভিন্ন ধরণের সূক্ষ্মভাবে বিভিন্ন উপায় রয়েছে তবে আমি যে পরামর্শ দিচ্ছি তার আপনার প্রয়োজনের জন্য আশ্চর্যরকম অবাক হওয়া উচিত।


হাই @ ক্যাননিবয়:

পোস্টগুলিতে কাস্টম ক্ষেত্রগুলি ভাগ করার সর্বোত্তম উপায়টি কী হবে তা আমি আসলে জানি না। তবে এটি কেবল আপনার প্রয়োজন হবে লাল পতাকা। কিছু যদি খুব শক্ত মনে হয় ...

একটি বিকল্প পদ্ধতির?

... আপনি এটিকে অন্যভাবে স্থপতি করে তুলতে পারেন ? আমি মনে করি আপনি "কার" এর একটি কাস্টম পোস্ট প্রকার তৈরির চেয়ে আরও ভাল হয়ে উঠবেন এবং তারপরে আপনি প্রতিটি "পৃষ্ঠা" এর জন্য সমস্ত কিছু এক পোস্টের পোস্টের মধ্যে সংরক্ষণ করতে পারবেন । এখানে কয়েকটি নমুনা URL রয়েছে:

http://example.com/cars/volvo850/  <-- overview
http://example.com/cars/volvo850/tech-specs/
http://example.com/cars/volvo850/pictures/

কাস্টম পোস্ট প্রকার সম্পর্কে শিখছি

এই প্রশ্নের উত্তরে আপনি কাস্টম পোস্ট প্রকারগুলি সম্পর্কে আরও শিখতে পারেন:

একটি কাস্টম পোস্টের ধরণ এবং পুনর্লিখনের নিয়ম

কাস্টম পোস্ট প্রকারগুলি এবং একাধিক পৃষ্ঠাগুলি বাস্তবায়নের জন্য আপনি নীচের মত কোড ব্যবহার করবেন যা আপনার "গাড়ি" কাস্টম পোস্ট প্রকারটি নিবন্ধভুক্ত করে এবং তারপরে আপনার গাড়ী পৃষ্ঠাগুলির জন্য পুনর্লিখনের নিয়ম সেট করে । আপনার থিমের functions.phpফাইল বা প্লাগিনে এই কোডটি রাখুন , আপনি যেটিকে পছন্দ করুন:

<?php
add_action('init','car_init');
function car_init() {
  register_post_type('car',
    array(
      'label'           => 'Cars',
      'public'          => true,
      'show_ui'         => true,
      'query_var'       => 'car',
      'rewrite'         => array('slug' => 'cars'),
      'hierarchical'    => true,
      //'supports'        => array('title','editor','custom-fields'),
    )
  );
  global $wp,$wp_rewrite;
  $wp->add_query_var('car-page');
  $wp_rewrite->add_rule('cars/([^/]+)/(tech-specs|pictures)','index.php?car=$matches[1]&car-page=$matches[2]', 'top');
  $wp_rewrite->flush_rules(false);  // This should really be done in a plugin activation
}

একটি গাড়ী-নির্দিষ্ট থিম টেম্পলেট ফাইল

তারপরে আপনার থিমটিতে একটি গাড়ি- স্পেসিফিক টেম্পলেট ফাইলের প্রয়োজন হবে ; এর জন্য ডিফল্ট নাম হবে single-car.php। আমি আপনার জন্য একটি স্টার্টার টেম্পলেট কোড করে দিয়েছি যা কোন বিষয়বস্তু রেন্ডার করতে হবে তা নির্ধারণের জন্য যদি একটি বিবৃতি ব্যবহার করে একটি টেম্পলেটে তিনটি ইউআরএল ( (ওভারভিউ) , 'প্রযুক্তি-চশমা' এবং 'ছবি' ) সরবরাহ করে :

<?php get_header(); ?>
<div id="container">
  <div id="content">
  <?php if ( have_posts() ): the_post(); ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <h1 class="entry-title"><?php the_title(); ?></h1>
    <div class="entry-content">
<?php if(is_car_techspecs()): ?>
  <a href="..">Back</a>
  <h1>Tech Specs</h1>
  The tech specs go here!
  <?php get_post_meta($post->ID,'_car_tech_specs'); ?>
<?php elseif (is_car_pictures()): ?>
  <a href="..">Back</a>
  <h1>Pictures</h1>
  Car Pictures go here!
  <?php get_post_meta($post->ID,'_car_pictures'); ?>
<?php else: ?>
  <ul>
    <h1>Overview</h1>
    <li><a href="tech-specs/">Tech Specs</a></li>
    <li><a href="pictures/">Pictures</a></li>
  </ul>
  <?php the_content(); ?>
<?php endif; ?>
      <?php the_content(); ?>
    </div>
  <?php endif; ?>
  </div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

উপরের উদাহরণে নোট করুন আমি ব্যবহারের সাথে খুব সরলীকৃত হচ্ছি get_post_meta(); বাস্তব সাইটের সেখানে আরও অনেক জটিলতা থাকা দরকার।

টেমপ্লেট ট্যাগগুলি ওরফে সহায়ক কার্যাদি

অবশ্যই আমি টেমপ্লেট ফাইলে জটিলতা কমানোর জন্য সাহায্যকারী ফাংশন ওরফে কিছু টেমপ্লেট ট্যাগ ব্যবহার করে বিবৃতি শর্ত। এখানে সেগুলি রয়েছে এবং আপনি এগুলি আপনার থিমের functions.phpফাইলটিতেও রাখতে পারেন:

function is_car_techspecs() {
  global $wp_query;
  return is_car_page('tech-specs');
}
function is_car_pictures() {
  global $wp_query;
  return is_car_page('pictures');
}

function is_car_page($page) {
  global $wp_query;
  return (isset($wp_query->query['car-page']) && $wp_query->query['car-page']==$page);
}

স্ক্রিনশট কাস্টম পোস্ট টাইপ প্রেম দিয়ে পূর্ণ

একবার আপনার কাছে সেই সমস্ত কোডটি হয়ে যায় এবং আপনি ভলভো 850 এর মতো একটি গাড়ি পোস্ট যুক্ত করলে আপনি এটি নিম্নলিখিত স্ক্রিনশটগুলির মতো কাজ করতে পারেন:

ওভারভিউ পৃষ্ঠা

http://example.com/cars/volvo850/
(সূত্র: মাইকসচিনেল.কম )

প্রযুক্তি চশমা পৃষ্ঠা

http://example.com/cars/volvo850/tech-specs/

ছবি পৃষ্ঠা

http://example.com/cars/volvo850/pictures/


1
খুব সুন্দর. আপনি কীভাবে এটি সেট আপ করবেন যাতে প্রযুক্তি চশমা ইত্যাদির তথ্য গতিশীল হয় (আপনার উদাহরণ হিসাবে হার্ড কোডিংয়ের চেয়ে)?
ট্র্যাভিস নর্থক্যাট

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

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

@ মাইক মাত্র একটি অনুমানমূলক। বিস্তারিতভাবে বলার জন্য - আমি ভাবছি যে আপনি এটি কীভাবে সেট আপ করতে পারেন তাই (উদাহরণস্বরূপ) টেক স্পেস পৃষ্ঠায় তথ্য অ্যাডমিন ড্যাশবোর্ডে কোথাও প্রবেশ করানো হয়েছে (একটি কাস্টম পোস্টের ধরণ, সম্ভবত, গাড়ীটি সেট করার জন্য একটি ট্যাক্সোনমি ব্যবহার করে?), টেমপ্লেট ফাইলের বিপরীতে।
ট্র্যাভিস নর্থকাট

@ টনরথকুট - আমি যখন ধরে রাখি আপনি যখন "প্রযুক্তি সংক্রান্ত পৃষ্ঠাগুলির তথ্য" বলছেন তখন আপনার অর্থ "সাব-পৃষ্ঠাগুলির তালিকা?" বা আপনি কাস্টম ক্ষেত্র মানে? পরে যদি আমি ধরে নিয়েছিলাম যে তথ্যটি কাস্টম ক্ষেত্রে সংরক্ষণ করা হবে। আমার উদাহরণ তা দেখায় নি; এটা করা উচিত?
মাইকচিন্কেল

1

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

 - Home
 - Volvo 850 (overview)
   - Volvo 850 tech spec
   - Volvo 850 pictures
 - Porsche 911 (overview)
   - Porsche 911 tech spec
   - Porsche 911 pictures

এইভাবে আপনাকে একবার মেটা ক্ষেত্র প্রবেশ করতে হবে - প্যারেন্ট পৃষ্ঠায় - এবং শিশু পৃষ্ঠাগুলিতে আপনি পিতামাতার কাছ থেকে সেই মেটা ডেটাটি টানতে পারেন:

<?php echo 'Top speed: '.get_post_meta($post->post_parent,'Top Speed',true); ?>

অবশ্যই এটি সংগঠিত করার একটি আরও ভাল উপায় হ'ল গাড়ীর প্রতিটি মডেলের জন্য একক কাস্টম পোস্ট প্রকার যা গাড়ির সমস্ত তথ্য সঞ্চিত করে এবং পৃষ্ঠায় প্রেরণ এবং ব্যবহার করা একটি জিইটি অনুরোধের ভিত্তিতে বিভিন্ন উপ-পৃষ্ঠা প্রদর্শন করা হবে কোন টেম্পলেটটি প্রদর্শন করতে হবে তা নির্ধারণ করতে স্যুইচ হিসাবে পৃষ্ঠা টেম্পলেট। এইভাবে আপনি সম্পূর্ণরূপে ডুপ্লিকেটিং এড়াতে পারবেন এবং পরবর্তী সময়ে টেমপ্লেটে আরও তথ্য যুক্ত করা সহজ করুন ...

আরো বিস্তারিত...

আমি এটি বেশ কয়েকবার করেছি। একটি সাইটে যেখানে কাস্টম পোস্টের ধরণের হিসাবে আমার এজেন্ট (কোম্পানির প্রতিনিধি) ছিল আমি সেখানে সেই ব্যক্তির সাথে সম্পর্কিত সমস্ত ডেটা সংরক্ষণ করার জন্য তাদের পোস্টগুলি ব্যবহার করেছিলাম তবে বাস্তবে কখনও পৃষ্ঠাটি প্রদর্শিত হয়নি। পরিবর্তে, আমার কাছে একটি "এজেন্ট তালিকা" পৃষ্ঠা, একটি "এজেন্ট পারফরম্যান্স রেকর্ড" পৃষ্ঠা এবং একটি "যোগাযোগ এই এজেন্ট" পৃষ্ঠা ছিল, যা সর্বদা একটি জিইটি ভেরিয়েবলের সাথে ডাকা হত এবং উপযুক্ত পোস্টের বাইরে তথ্য প্রদর্শন করা হত। সুতরাং পার্মালিঙ্কটি সাইট . com/agent-listing/ ? agent=john-smith মত কিছু দেখায় ।

অন্য সাইটে আমি একটি পৃষ্ঠায় সমস্ত তথ্য সেট আপ করেছি এবং পৃষ্ঠার টেমপ্লেটে সেই পৃষ্ঠাটির জন্য তিনটি ভিউ তৈরি করেছি। আপনার ক্ষেত্রে, এটি সাইট . com/cars/volvo-850/ ? pictures মত কিছু দেখায় ।

এবং পৃষ্ঠা টেম্পলেটটিতে আপনি সামগ্রীর শীর্ষের নিকটে সেই পরিবর্তনশীলটির জন্য একটি চেক অন্তর্ভুক্ত করবেন:

if ($_GET['pictures']) {

 // template for pictures page

} else if ($_GET['tech-spec']) {

 // template for tech specs page 

} else {

 // overview template

}

অনেক ধন্যবাদ! আপনার শেষ পরামর্শের জন্য, আপনি কি বোঝাতে চেয়েছেন যে আমি একটি ফাঁকা পৃষ্ঠা তৈরি করেছি (সম্ভবত 'ভলভো 850 উইজেট ডেটা বলা হয়) যার এই সমস্ত কাস্টম ক্ষেত্র রয়েছে, এবং অন্যান্য ভলভো 850 পৃষ্ঠাগুলি স্বয়ংক্রিয়ভাবে এই ডেটাটি ধরে ফেলবে (এরর, কোনওভাবে)? (এর অর্থ আমি উপস্থিতিতে> মেনুগুলিতে ম্যানুয়ালি ম্যানুয়ালগুলি তৈরি করতে চাই যা আমি যাই হোক না কেন) ... অথবা সম্ভবত ওভারভিউ পৃষ্ঠার কাস্টম ক্ষেত্রগুলি থেকে ডেটা নেওয়া যেতে পারে ...
ক্যাননিবয়

আমি এটি দুইভাবেই করেছি। আমি আমার উত্তরটি উপরে সম্পাদনা করে ব্যাখ্যা করতে পেরেছি। আপনি যা করছেন তা অনেকটা নির্ভর করে যে আপনি কীভাবে নিজের মেনু তৈরি করতে চান, তার উপর নির্ভর করে।
25-25

উফ। আমি কেবল আরও নিচে পড়লাম এবং বুঝতে পেরেছিলাম যে মাইক আমি যা বলছিলাম তা ইতিমধ্যে জবাব দিয়েছে।
25-25

0

আপনি যদি কাস্টম পোস্টের প্রকারগুলি তৈরি করতে না চান এবং আপনি প্রতিটি পৃষ্ঠা বা পোস্টের জন্য একটি কাস্টম সাইডবার অন্তর্ভুক্ত করতে চান তবে আপনি গ্রেসফুল সাইডবার প্লাগইনটি ব্যবহার করতে পারেন। এটি গ্রেফুল শিরোনাম এবং ক্রেফুল সামগ্রী হিসাবে অতিরিক্ত ক্ষেত্রগুলি ব্যবহার করে পোস্ট বা পৃষ্ঠা সম্পাদনা স্ক্রিনের মধ্যে থেকেই কাস্টম সাইডবার সামগ্রী তৈরি করতে দেয়। পোস্টগুলি বা পৃষ্ঠাটি যখন আপনার ব্লগে প্রদর্শিত হচ্ছে তখন এগুলি উইজেট হিসাবে সাইডবার এরিয়ায় প্রদর্শিত হয়। এই প্লাগইন সম্পর্কিত আরও তথ্য http://www.mlynn.org/graceful-sidebar-plugin এ উপলব্ধ

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