আপনার ক্যোয়ারী এবং সহজ প্রদর্শনের জন্য কলাম তৈরি করুন
টেমপ্লেটগুলিতে টেমপ্লেট ট্যাগ এবং লুপের সাথে ভালভাবে ফিট করে এমন কিছু থাকতে থিমগুলিতে আরও কার্যকর। আমার প্রথম উত্তরটি তেমন ফোকাস করে নি। অতিরিক্তভাবে আমি ভেবেছিলাম দ্রুত গ্রহণের জন্য এটি কিছুটা জটিল।
একটি সহজ পদ্ধতির যা আমার মনের মধ্যে ছড়িয়ে পড়েছিল তা হল কলামগুলি দিয়ে "লুপ" প্রসারিত করা এবং এখন পর্যন্ত এই সমাধানটিতে আসা:
একটি ডাব্লুপি_কিউরি_কলামগুলি অবজেক্ট কলমের সাথে যে কোনও স্ট্যান্ডার্ড ডাব্লুপি কোয়েরিকে "প্রসারিত" করে যা সহজেই পুনরাবৃত্তি হতে পারে। প্রথম প্যারামিটারটি ক্যোয়ারী ভেরিয়েবল এবং দ্বিতীয় প্যারামিটারটি প্রতি কলামে প্রদর্শিত আইটেমের সংখ্যা:
<?php $the_query = new WP_Query('cat=1&showposts=50&orderby=title&order=asc');?>
<?php foreach(new WP_Query_Columns($the_query, 10) as $column_count) : ?>
<ul>
<?php while ($column_count--) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endforeach; ?>
এটি ব্যবহার করতে, কেবলমাত্র এই থিমটি থেকে আপনার থিম ফাংশন.এফপি -তে ডাব্লুপি_কিউয়ারি_কলামগুলি শ্রেণি যুক্ত করুন ।
উন্নত ব্যবহার
আপনি বর্তমানে প্রদর্শিত কলাম নম্বরটির যদি প্রয়োজন হয় (উদাহরণস্বরূপ কিছু এমনকি / বিজোড় সিএসএস ক্লাসের জন্য, আপনি সেটি পূর্বাচ থেকেও পেতে পারেন:
<?php foreach(new WP_Query_Columns($the_query, 10) as $column => $column_count) : ?>
এবং মোট কলামের সংখ্যাও উপলব্ধ:
<?php
$the_columns = new WP_Query_Columns($the_query, 10);
foreach($the_columns as $column => $column_count) :
?>
<h2>Column <?php echo $column; ?>/<?php echo sizeof($the_columns); ?></h2>
<ul>...
বিশটি উদাহরণ
আমি পরীক্ষার জন্য এইভাবে দশটি থিমটি হ্যাক করতে পারি এবং এইভাবে কোনও লুপের উপরে শিরোনামগুলি যুক্ত করতে পারি। এটি লুপ.এফপি inোকানো হয়েছে, শুরুটি থিমের কোড:
<?php /* If there are no posts to display, such as an empty archive page */ ?>
<?php if ( ! have_posts() ) : ?>
<div id="post-0" class="post error404 not-found">
<h1 class="entry-title"><?php _e( 'Not Found', 'twentyten' ); ?></h1>
<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyten' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
</div><!-- #post-0 -->
<?php endif; ?>
<!-- WP_Query_Columns -->
<?php
### Needs WP_Query_Columns --- see http://wordpress.stackexchange.com/q/9308/178
$query_copy = clone $wp_query; // save to restore later
foreach( new WP_Query_Columns($wp_query, 3) as $columns_index => $column_count ) : ?>
<ul>
<?php
while ( $column_count-- ) : the_post(); ?>
<li><h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2></li>
<?php endwhile; ?>
</ul>
<?php endforeach; ?>
<?php $wp_query = $query_copy;?>
<?php
/* Start the Loop.
...
দীর্ঘ উত্তরের জন্য:
(এটি মূলত আমি উপরের স্টাফগুলিতে এসেছি, তবে সাধারণ গণিতের ক্রিয়াকলাপগুলি দিয়ে কীভাবে সমস্যাটি সমাধান করা যায় তা আরও ভালভাবে ব্যাখ্যা করে My আমার নতুন সমাধানটি প্রাক-গণনা করা কিছুতে পুনরাবৃত্তি করা rate)
সমস্যাটি সমাধান করার জন্য আপনার আসলে কতটা প্রয়োজন তা কিছুটা নির্ভর করে।
উদাহরণস্বরূপ, যদি প্রতি কলামে আইটেমের সংখ্যা সমান হয় তবে এটি খুব সহজ:
<?php $the_query = new WP_Query('cat=1&showposts=50&orderby=title&order=asc');?>
<?php while ($the_query->have_posts()) : $the_query->the_post();?>
<ul>
<li>.. </li>
<ul>
<?php endwhile; wp_reset_query(); ?>
</ul>
এমনকি সেই সাধারণ কোড সহ, এটি দেখা যায় যে একাধিক সিদ্ধান্ত নিতে হবে:
- এক কলামে কয়টি আইটেম রয়েছে?
- মোট কয়টি আইটেম আছে?
- নতুন কলাম শুরু করার আছে?
- এবং এখানে কি কোনও কলাম শেষ হবে?
শেষ প্রশ্নটি HTML আউটপুটটির জন্য বেশ ইন্টারেস্টেরিং কারণ আপনি সম্ভবত কেবল আইটেমগুলিই নয়, এইচটিএমএল উপাদানগুলির সাথে কলামটিও বদ্ধ করতে চান।
ভাগ্যক্রমে কোড সহ, আমরা এগুলি সমস্ত ভেরিয়েবলগুলিতে সেট করতে পারি এবং এমন কোড তৈরি করতে পারি যা সর্বদা আমাদের প্রয়োজনের সাথে গণনা করে।
এবং কখনও কখনও এমনকি এমনকি আমরা প্রথম থেকেই প্রতিটি প্রশ্নের উত্তর দিতে পারি না। এক্সপ্লোমালের জন্য, মোট আইটেমের গণনা: মোট কলামগুলির পূর্ণসংখ্যার সংখ্যার সাথে মেলে এমন কোনও, কিছু, একাধিক, একটি সঠিক গণনা রয়েছে?
এমনকি জ্যান ফ্যাব্রির উত্তর কিছু ক্ষেত্রে কার্যকর হতে পারে (যেমন উপরে আমার উদাহরণটি এক-আইটেম-প্রতি-কলামের দৃশ্যের জন্য করে), আপনি এমন কিছুতে আগ্রহী হতে পারেন যা ডাব্লুপি_কিউয়ারী দ্বারা ফিরিয়ে দেওয়া আইটেমগুলির জন্য কাজ করে।
গণিতের জন্য প্রথম:
//
// arithmetical example:
//
# configuration:
$colSize = 20; // number of items in a column
$itemsTotal = 50; // number of items (total)
# calculation:
$count = 0; // a zero-based counter variable
$isStartOfNewColum = 0 === ($count % $colSize); // modulo operation
$isEndOfColumn = ($count && $isStartOfNewColum) || $count === $itemsTotal; // encapsulation
এই কোডটি চালায় না, সুতরাং আসুন এটি একটি সাধারণ পাঠ্যের উদাহরণে রাখি
//
// simple-text example:
//
$column = 0; // init a column counter
for($count=0; $count<= $itemsTotal; $count++) {
$isStartOfNewColum = 0 === ($count % $colSize); // modulo
$isEndOfColumn = ($count && $isStartOfNewColum);
$isStartOfNewColum && $column++; // update column counter
if ($isEndOfColumn) {
printf("/End of Column: %d\n", $column-1);
}
if ($isStartOfNewColum) {
printf("<start of Column: %d\n", $column);
}
printf(" * item %d\n", $count);
}
if ($count && !$isEndOfColumn && --$count === $itemsTotal) {
printf("/End of Column: %d\n", $column);
}
printf("Done. Total Number of Columns: %d.\n", $column);
এটি আসলে চালায় এবং ইতিমধ্যে কিছু আউটপুট করে:
<start of Column: 1
* item 0
* item 1
* item 2
* item 3
...
* item 17
* item 18
* item 19
/End of Column: 1
<start of Column: 2
* item 20
* item 21
* item 22
...
* item 37
* item 38
* item 39
/End of Column: 2
<start of Column: 3
* item 40
* item 41
* item 42
...
* item 48
* item 49
* item 50
/End of Column: 3
Done. Total Number of Columns: 3.
ইতিমধ্যে বেশ ভাল simulates কিভাবে এটি পারে একটি ওয়ার্ডপ্রেস টেমপ্লেট মত চেহারা:
//
// wordpress example:
//
$count = 0; // init item counter
$column = 0; // init column counter
$colSize = 10; // column size of ten this time
$the_query = new WP_Query('cat=1&showposts=50&orderby=title&order=asc');
$itemsTotal = $the_query->post_count;
?>
<?php while ($the_query->have_posts()) : $the_query->the_post();?>
<?php
# columns display variables
$isStartOfNewColum = 0 === ($count % $colSize); // modulo
$isEndOfColumn = ($count && $isStartOfNewColum);
$isStartOfNewColum && $column++; // update column counter
if ($isEndOfColumn) {
print('</ul>');
}
if ($isStartOfNewColum) {
printf('<ul class="col-%d">', $column);
}
?>
<li> ... make your day ...
</li>
<?php endwhile; ?>
<?php
if ($count && !$isEndOfColumn && --$count === $itemsTotal) {
print('</ul>');
}
// You don't have to do this in every loop, just once at the end should be enough
wp_reset_query();
?>
(আমি ডাব্লুপি পরিবেশে সর্বশেষ উদাহরণটি কার্যকর করি নি তবে এটি কমপক্ষে সিন্টেক্সিকভাবে সঠিক হওয়া উচিত))