رفتن به مطلب

مشکل در ساخت آرشیو و استفاده از Wp_query


پست های پیشنهاد شده

درود بر شما دوستان گرامی

من مدتی هستم که در فکر ایجاد آرشیوی برای یک قالب شخصی هستم .

این آرشیو باید به صورت تب بندی شده باشد ، به عنوان مثال ، ما یک دسته داریم و زیر مجموعه اون دسته باز زیر مجموعه دیگر داریم

برای مثال : دسته اصلی دسته { آموزش } > زیر مجموعه > { فوتوشاپ ، مایا ،زی براش ، هودینی و ... }

حالا با این تفاصل من فکر کردم که باید کیوری بسازم و هر کیوری رو به یک دسته اختصاص بدم ، تا بدین جا همه چیز خوب پیش رفت اما زمانی که خواستم شمارش گر صفحه ( pagination ) به هر کیوری اضافه کنم ، متوجه شدم بعد از اضافه شدن شمارش گر تداخلی بین اونها ایجاد شده ، لازم به ذکر هست که بنده هر کیوری رو در فایلی هم نام ایجاد کردم و سپس هر کدام از فایل ها رو به صفحه مورد نظر اینکلود کردم ، با این حال مشکل حل نشد .

این کیوری مورد استفاده بنده

 <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php query_posts('posts_per_page=5&cat=1&paged='.$paged); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
// Loop code
<?php
endwhile; ?>

و این نیز شمارش گر

<?php global $wp_query;
$big = 999999999; // need an unlikely integer
echo
paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages
) );
?>
<?php endif; ?>
<?php wp_reset_query(); ?>

کد کامل مورد استفاده


<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php query_posts('posts_per_page=5&cat=1&paged='.$paged); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
// Loop code
<?php
endwhile; ?>
<?php global $wp_query;
$big = 999999999; // need an unlikely integer
echo
paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages
) );
?>
<?php endif; ?>
<?php wp_reset_query(); ?>

راهی هست که بدون این تداخل بشه از لوپ چند منظوره در یک صفحه استفاده کرد یا خیر .

یک نکته اینکه بنده خودم نام گزاری متفاوت رو هم انجام دادم اما مشکل رو حل نکرد .

از پلاگین هم به جای کد های موجود استفاده کردم باز همین تداخل وجود داشت .

این آموزش هم نتونست کمکی بکنه .


$paged1 = isset( $_GET['paged1'] ) ? (int) $_GET['paged1'] : 1;
$args1 = array(
'paged' => $paged1,
'posts_per_page' => 2,
'category_name' => 'dogs'
);
$query1 = new WP_Query( $args1 );

while ( $query1->have_posts() ) : $query1->the_post();
the_title();
echo '<br>';
the_category(' ');
the_excerpt();
echo '<hr>';
endwhile;

$pag_args1 = array(
'format' => '?paged1=%#%',
'current' => $paged1,
'total' => $query1->max_num_pages,
'add_args' => array( 'paged1' => $paged1 )
);
echo paginate_links( $pag_args1 );

در کل یا من خیلی آماتور هستم ، یا واقعأ راهش بالاتر از دانش من هست ، نمونه مورد نظر مثل سایت فارس کیدذ هست .

با سپاس از شما دوستان گرامی بابات پاسخ گویی احتمالی .

ویرایش شده توسط ariux
لینک به ارسال

برای هر کوئری نام مشخص بگذارید و هر کوئری را با new شروع کنید


<?php
$custom_query_1 = new WP_Query(array(
'post_status' =>'publish',
'post_type' =>'post',
'order' =>'descending',
'orderby' =>'ID',
'posts_per_page' =>'10',

'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
?>
<?php if($custom_query_1->have_posts()) :
while($custom_query_1->have_posts()) : $custom_query_1->the_post();?>

لینک به ارسال

درود دگر بار

متاسفانه مشکل حل نشد

کیوری های مورد استفاده بنده



<?php
$custom_query_1 = new WP_Query(array(
'post_status' =>'publish',
'cat' =>'83',
'posts_per_page' =>'3',

'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
?>
<?php if($custom_query_1->have_posts()) :
while($custom_query_1->have_posts()) : $custom_query_1->the_post();

the_title();

endwhile;
kriesi_pagination();
endif;
wp_reset_query();
?>



<?php
$custom_query_2 = new WP_Query(array(
'post_status' =>'publish',
'cat' =>'1',
'posts_per_page' =>'5',

'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
?>
<?php if($custom_query_2->have_posts()) :
while($custom_query_2->have_posts()) : $custom_query_2->the_post();

the_title();

endwhile;
kriesi_pagination();
endif;
wp_reset_query();
?>

ساختار HTML صفحه مورد نظر

<div class="container">
<div class="list-wrapper">
<ul class="idTabs navigation-big-tabs clearfix" data-chnage_url="true" id="tab">
<li class="one"><a href="#test" class="tab">test </a></li>
<li class="two"><a href="#test2" class="tab">test 2</a></li>
<li class="three"><a href="#test3" class="tab">test 3</a></li>
<li class="four"><a href="#test4" class="tab">test 4</a></li>
<li class="five"><a href="#test5" class="tab">test 5</a></li>
<li class="six"><a href="#test6" class="tab">test 6</a></li>
</ul>
<div class="list-content clearfix" id="test">
<?php include($DOCUMENT_ROOT."test.php");?>
</div>
<div class="list-content clearfix" id="test2">
<?php include($DOCUMENT_ROOT."test1.php");?>
</div>
<div class="list-content clearfix" id="test3"> </div>
<div class="list-content clearfix" id="test4"> </div>
<div class="list-content clearfix" id="test5"> </div>
<div class="list-content clearfix" id="test6"> </div>
</div>
</div>

شمارش گر موجود در فانکشن

<?php

function kriesi_pagination($pages = '', $range = 2)
{
$showitems = ($range * 2)+1;

global $paged;
if(empty($paged)) $paged = 1;

if($pages == '')
{
global $wp_query;
$pages = $wp_query->max_num_pages;
if(!$pages)
{
$pages = 1;
}
}

if(1 != $pages)
{
echo "<div class='pagination'>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>«</a>";
if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹</a>";

for ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
{
echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
}
}

if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>›</a>";
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>»</a>";
echo "</div>\n";
}
}

?>

با این حال ، روی صفحات بعدی یا قبلی که کلیک میکنم ، با ذکر این موضوع که عمل انتقال به خوبی صورت میگیره ، اما روی تب اکتیو باقی نمیمونه ، بلکه پرش میکنه به صورت خودکار به تب نخست و اونجاست که متوجه میشیم تب نخست هم یک صفحه به عقب یا جلو منتقل شده بر حسب درخواست .

کجای کار رو من دارم اشتباه انجام میدم که به بیراهه رفتم ؟

با سپاس از شما استاد گرامی .

ویرایش شده توسط ariux
لینک به ارسال

خوب خودتون دارید می گید تب

تب هر صفحه توی اون صفحه درست می شه و وقتی می رید به صفحه دو تبهای صفحه دو رو مشاهده می کنید

اگر هدفتونه فقط محتوای کوئری را صفحه بندی کنید این راهش نیست

لینک به ارسال

ممنون از شما

اما خیر هدفم فقط این نیست ، همونطور که گفتم هدفم این هستش که هر تب حکم یک صفحه رو برای من داشته باشه و محتواش با محتوای تب دیگر تفاوت داشته باشه .

البته من سعیم این هست که مثالی در بین سایت های پارسی نزنم ، اما متاسفانه نمونه مورد نظر رو فقط در فارس کیدذ مشاده کردم ، دقیق نمیدونم به چه شکل ایجاد شده اما قصد و هدف نهایی من ایجاد همچین چیزی از نظر ساختار هستش .

لینک به ارسال

سایتی که گفتید رو نمی شناسم

ولی اگر قرار باشه تب هاتون حکم صفحه رو داشته باشند کار پیچیده ای نیست یعنی در واقع فقط ظاهر کار شبیه تب باید باشه یعنی بجای هر تب باید یک page template براش ساخته بشه

اگر عمری بود فردا یه آموزش براش می گذارم

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...