رفتن به مطلب

صفحه بندی کوئری در صفحه ی single.php


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

سلام . من توی صفحه ی single یکی از post type هام یک کوئری دارم که تعداد مطالبش زیاده و میخام که براش صفحه بندی بزارم . 

توی منابع خارجی گشتم ولی چیزی دستگیرم نشد . 

اگر میشه منو راهنمایی کنید . 

لینک به ارسال
در ۱ ساعت قبل، PRGAME گفته است :

سلام . من توی صفحه ی single یکی از post type هام یک کوئری دارم که تعداد مطالبش زیاده و میخام که براش صفحه بندی بزارم . 

توی منابع خارجی گشتم ولی چیزی دستگیرم نشد . 

اگر میشه منو راهنمایی کنید . 

باسلام

کوئری و حلقه رو اینجا قرار بدید 

لینک به ارسال
در 27 دقیقه قبل، nazanin123 گفته است :

باسلام

کوئری و حلقه رو اینجا قرار بدید 

مرسی . 

<?php
$args = array(
	'post_type'  => 'post',
	'meta_query' => array(
		array(
			'key'     => 'metair_karn',
			'value'   => $son ,
			'compare' => '=',
		),
	),
);
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>


<?php endwhile;?>
<?php else : ?>
<p><?php _e( 'متاسفیم ! چیزی پیدا نشد ! لطفا درصورت مشاهده این پیغام با مدیریت سایت تماس بگیرید .' ); ?></p>
<?php endif; ?>

چون محتویات درون حلقه خیلی طولانی بود حذفشون کردم توی کد بالا .

لینک به ارسال
در 7 دقیقه قبل، PRGAME گفته است :

مرسی . 

چون محتویات درون حلقه خیلی طولانی بود حذفشون کردم توی کد بالا .

کد شما به شکل زیر تغییر میکنه ، عدد 10 تعداد پست های شماست ( دقت کنید کدهای حلقه که حذف کردید درست جایگزین بشه)

همینطور در کد زیر تابع نمایش صفحه بندی مشخص کردم ، قبل از پایان حلقه

قبل از هر تغییری یک کپی  بگیرید که اگر اشتباهی شد برگردانید ( کدهای من تست شده ست )

<?php
$args = array(
	'post_type'  => 'post',
    'posts_per_page' =>'10',
	'meta_query' => array(
		array(
			'key'     => 'metair_karn',
			'value'   => $son ,
			'compare' => '=',
		),
	),
 'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
);
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>

<?php //نمایش صفحه بندی
  wpbeginner_numeric_posts_nav(); ?>
<?php endwhile;?>
<?php else : ?>
<p><?php _e( 'متاسفیم ! چیزی پیدا نشد ! لطفا درصورت مشاهده این پیغام با مدیریت سایت تماس بگیرید .' ); ?></p>
<?php endif; ?>

به فانکشنز مراجعه کنید و کد زیر رو انتهای فایل ، قبل از بسته شدن php یعنی قبل از <? قرار بدید ( قبل از هر تغییری یک کپی از فانکشنز بگیرید که اگر اشتباهی شد برگردونید)

function wpbeginner_numeric_posts_nav() {
 if( is_singular() )
 return;
 global $wp_query;
 /** Stop execution if there's only ۱ page */
 if( $wp_query->max_num_pages <= ۱ )
 return;
 $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : ۱;
 $max = intval( $wp_query->max_num_pages );
 /** Add current page to the array */
 if ( $paged >= ۱ )
 $links[] = $paged;
 /** Add the pages around the current page to the array */
 if ( $paged >= ۳ ) {
 $links[] = $paged - ۱;
 $links[] = $paged - ۲;
 }
 if ( ( $paged + ۲ ) <= $max ) {
 $links[] = $paged + ۲;
 $links[] = $paged + ۱;
 }
 echo '<div class="navigation"><ul>' . "\n";
 /** Previous Post Link */
 if ( get_previous_posts_link() )
 printf( '<li>%s</li>' . "\n", get_previous_posts_link() );
 /** Link to first page, plus ellipses if necessary */
 if ( ! in_array( ۱, $links ) ) {
 $class = ۱ == $paged ? ' class="active"' : '';
 printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( ۱ ) ), '۱' );
 if ( ! in_array( ۲, $links ) )
 echo '<li>…</li>';
 }
 /** Link to current page, plus ۲ pages in either direction if necessary */
 sort( $links );
 foreach ( (array) $links as $link ) {
 $class = $paged == $link ? ' class="active"' : '';
 printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
 }
 /** Link to last page, plus ellipses if necessary */
 if ( ! in_array( $max, $links ) ) {
 if ( ! in_array( $max - ۱, $links ) )
 echo '<li>…</li>' . "\n";
 $class = $paged == $max ? ' class="active"' : '';
 printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
 }
 /** Next Post Link */
 if ( get_next_posts_link() )
 printf( '<li>%s</li>' . "\n", get_next_posts_link() );
 echo '</ul></div>' . "\n";
}

به انتهای style.css کدهای زیر را اضافه کنید

.navigation li a,
.navigation li a:hover,
.navigation li.active a,
.navigation li.disabled {
 color: #fff;
 text-decoration:none;
}
 
.navigation li {
 display: inline;
}
 
.navigation li a,
.navigation li a:hover,
.navigation li.active a,
.navigation li.disabled {
 background-color: #۶FB۷E۹;
 border-radius: ۳px;
 cursor: pointer;
 padding: ۱۲px;
 padding: ۰.۷۵rem;
}
 
.navigation li a:hover,
.navigation li.active a {
 background-color: #۳C۸DC۵;
}

 

لینک به ارسال
در 9 دقیقه قبل، nazanin123 گفته است :

کد شما به شکل زیر تغییر میکنه ، عدد 10 تعداد پست های شماست ( دقت کنید کدهای حلقه که حذف کردید درست جایگزین بشه)

همینطور در کد زیر تابع نمایش صفحه بندی مشخص کردم ، قبل از پایان حلقه

قبل از هر تغییری یک کپی  بگیرید که اگر اشتباهی شد برگردانید ( کدهای من تست شده ست )


<?php
$args = array(
	'post_type'  => 'post',
    'posts_per_page' =>'10',
	'meta_query' => array(
		array(
			'key'     => 'metair_karn',
			'value'   => $son ,
			'compare' => '=',
		),
	),
 'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
);
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>

<?php //نمایش صفحه بندی
  wpbeginner_numeric_posts_nav(); ?>
<?php endwhile;?>
<?php else : ?>
<p><?php _e( 'متاسفیم ! چیزی پیدا نشد ! لطفا درصورت مشاهده این پیغام با مدیریت سایت تماس بگیرید .' ); ?></p>
<?php endif; ?>

به فانکشنز مراجعه کنید و کد زیر رو انتهای فایل ، قبل از بسته شدن php یعنی قبل از <? قرار بدید ( قبل از هر تغییری یک کپی از فانکشنز بگیرید که اگر اشتباهی شد برگردونید)


function wpbeginner_numeric_posts_nav() {
 if( is_singular() )
 return;
 global $wp_query;
 /** Stop execution if there's only ۱ page */
 if( $wp_query->max_num_pages <= ۱ )
 return;
 $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : ۱;
 $max = intval( $wp_query->max_num_pages );
 /** Add current page to the array */
 if ( $paged >= ۱ )
 $links[] = $paged;
 /** Add the pages around the current page to the array */
 if ( $paged >= ۳ ) {
 $links[] = $paged - ۱;
 $links[] = $paged - ۲;
 }
 if ( ( $paged + ۲ ) <= $max ) {
 $links[] = $paged + ۲;
 $links[] = $paged + ۱;
 }
 echo '<div class="navigation"><ul>' . "\n";
 /** Previous Post Link */
 if ( get_previous_posts_link() )
 printf( '<li>%s</li>' . "\n", get_previous_posts_link() );
 /** Link to first page, plus ellipses if necessary */
 if ( ! in_array( ۱, $links ) ) {
 $class = ۱ == $paged ? ' class="active"' : '';
 printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( ۱ ) ), '۱' );
 if ( ! in_array( ۲, $links ) )
 echo '<li>…</li>';
 }
 /** Link to current page, plus ۲ pages in either direction if necessary */
 sort( $links );
 foreach ( (array) $links as $link ) {
 $class = $paged == $link ? ' class="active"' : '';
 printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
 }
 /** Link to last page, plus ellipses if necessary */
 if ( ! in_array( $max, $links ) ) {
 if ( ! in_array( $max - ۱, $links ) )
 echo '<li>…</li>' . "\n";
 $class = $paged == $max ? ' class="active"' : '';
 printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
 }
 /** Next Post Link */
 if ( get_next_posts_link() )
 printf( '<li>%s</li>' . "\n", get_next_posts_link() );
 echo '</ul></div>' . "\n";
}

به انتهای style.css کدهای زیر را اضافه کنید


.navigation li a,
.navigation li a:hover,
.navigation li.active a,
.navigation li.disabled {
 color: #fff;
 text-decoration:none;
}
 
.navigation li {
 display: inline;
}
 
.navigation li a,
.navigation li a:hover,
.navigation li.active a,
.navigation li.disabled {
 background-color: #۶FB۷E۹;
 border-radius: ۳px;
 cursor: pointer;
 padding: ۱۲px;
 padding: ۰.۷۵rem;
}
 
.navigation li a:hover,
.navigation li.active a {
 background-color: #۳C۸DC۵;
}

 

این روش رو قبلا امتحان کرده بودم و کار نکرد .

الان هم با کد هایی که شما دادین تست کردم ولی بازم کار نکرد . 

فکر کنم کدتون هم یه مشکلی داشت . چون صفحه بندی رو توی حلقه گذاشتین . 

لینک به ارسال
در 40 دقیقه قبل، PRGAME گفته است :

این روش رو قبلا امتحان کرده بودم و کار نکرد .

الان هم با کد هایی که شما دادین تست کردم ولی بازم کار نکرد . 

فکر کنم کدتون هم یه مشکلی داشت . چون صفحه بندی رو توی حلقه گذاشتین . 

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

http://doctorwp.com از همین کد استفاده شده

کد زیر از مخزن وردپرس برای ایجاد صفحه بندی  

در فانکشنز اضافه کنید:

function wp_pagination() {
global $wp_query;
$big = ۱۲۳۴۵۶۷۸;
$page_format = paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( ۱, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages,
    'type'  => 'array'
) );
if( is_array($page_format) ) {
            $paged = ( get_query_var('paged') == ۰ ) ? ۱ : get_query_var('paged');
            echo '<div><ul>';
            echo '<li><span>'. $paged . ' از ' . $wp_query->max_num_pages .'</span></li>';
            foreach ( $page_format as $page ) {
                    echo "<li>$page</li>";
            }
           echo '</ul></div>';
}
}

کدهای css

.pagination {
margin: ۲۰px ۰;
}
.pagination ul {
display: inline-block;
margin-left: ۰;
margin-bottom: ۰;
border-radius: ۵px;
}
.pagination ul>li {
display: inline;
float:right;}
.pagination ul>li:first-child>a, .pagination ul>li:first-child>span {
border-right-width: ۱px;
border-radius: ۰px ۵px ۵px ۰px;
}
.pagination ul>li:last-child>a, .pagination ul>li:last-child>span {
border-left-width: ۱px;
border-radius: ۵px ۰px ۰px ۵px;
}
.pagination ul>li>a, .pagination ul>li>span {
float: left;
padding: ۴px ۱۲px;
line-height: ۲۰px;
text-decoration: none;
background-color: #ffffff;
border: ۱px solid #dddddd;
border-left-width: ۰;
}

جهت نمایش از کد زیر استفاده کنید

<div class="pagination">
<?php wp_pagination(); ?>
</div>

این اگر جواب نداد دیگه یا جایگذاری اشکال داره یا کدهای شما ( اگر جواب نداد فانکشنز رو کامل در یک فایل اینجا قرار بدید)

لینک به ارسال

این کد هایی که دادید رو همه رو توی index یا page تست کردم . 

ولی هیچکدوم توی single-custom.php یا single.php کار نمیکنن . 

لینک به ارسال
در 13 ساعت قبل، PRGAME گفته است :

این کد هایی که دادید رو همه رو توی index یا page تست کردم . 

ولی هیچکدوم توی single-custom.php یا single.php کار نمیکنن . 

شما در جایگذاری اشتباه میکنید ، بخش اصلی کد باید در فانکشنز و قبل از بسته شدن php استفاده بشه ... 

لینک به ارسال
در 3 ساعت قبل، nazanin123 گفته است :

شما در جایگذاری اشتباه میکنید ، بخش اصلی کد باید در فانکشنز و قبل از بسته شدن php استفاده بشه ... 

بنده طراح قالب وردپرس هستم و این مسایل رو کامل میدونم . به طور دقیق هم همه چیز رو چک کردم .

ولی خاصیت single.php اینه که صفحه بندی نمیگیره . 

حالا میخام ببینم چطور باید به این خاصیت غلبه کرد . 

شما خودتون یه کوئری معمولی بسازید و توی single چک کنید ببینید کار میکنه یا خیر .

لینک به ارسال
در 3 ساعت قبل، PRGAME گفته است :

بنده طراح قالب وردپرس هستم و این مسایل رو کامل میدونم . به طور دقیق هم همه چیز رو چک کردم .

ولی خاصیت single.php اینه که صفحه بندی نمیگیره . 

حالا میخام ببینم چطور باید به این خاصیت غلبه کرد . 

شما خودتون یه کوئری معمولی بسازید و توی single چک کنید ببینید کار میکنه یا خیر .

از کد زیر استفاده کنید ، باید جواب بده، فقط دقت کنید خط 12 باید در کوئری که صفحه بندی میخواد باید باشه ، ادامه اش هم که حلقه و در نهایت صفحه بندی هست

<?php
$args = array(
	'post_type'  => 'post',
    'posts_per_page' =>'10',
	'meta_query' => array(
		array(
			'key'     => 'metair_karn',
			'value'   => $son ,
			'compare' => '=',
		),
	),
 'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
);
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>

<?php //نمایش صفحه بندی
  wpbeginner_numeric_posts_nav(); ?>
<?php endwhile;
echo '
<div id="paginate">';
$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' => $query->max_num_pages
) );
echo '</div>';?>
<?php else : ?>
<p><?php _e( 'متاسفیم ! چیزی پیدا نشد ! لطفا درصورت مشاهده این پیغام با مدیریت سایت تماس بگیرید .' ); ?></p>
<?php endif; wp_reset_query();?>

 

ویرایش شده توسط nazanin123
لینک به ارسال
در 22 ساعت قبل، nazanin123 گفته است :

از کد زیر استفاده کنید ، باید جواب بده، فقط دقت کنید خط 12 باید در کوئری که صفحه بندی میخواد باید باشه ، ادامه اش هم که حلقه و در نهایت صفحه بندی هست


<?php
$args = array(
	'post_type'  => 'post',
    'posts_per_page' =>'10',
	'meta_query' => array(
		array(
			'key'     => 'metair_karn',
			'value'   => $son ,
			'compare' => '=',
		),
	),
 'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
);
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>

<?php //نمایش صفحه بندی
  wpbeginner_numeric_posts_nav(); ?>
<?php endwhile;
echo '
<div id="paginate">';
$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' => $query->max_num_pages
) );
echo '</div>';?>
<?php else : ?>
<p><?php _e( 'متاسفیم ! چیزی پیدا نشد ! لطفا درصورت مشاهده این پیغام با مدیریت سایت تماس بگیرید .' ); ?></p>
<?php endif; wp_reset_query();?>

 

الان با این کد صفحه بندی ظاهر شد ولی عمل نمیکنه . یعنی وقتی مثلا روی 2 کلیک میکنم که بره صفحه 2  ، میره به همون ادرس فعلی و صفحه عوض نمیشه .

لینک به ارسال
در در 1/16/2017 at 15:00، PRGAME گفته است :

سلام . من توی صفحه ی single یکی از post type هام یک کوئری دارم که تعداد مطالبش زیاده و میخام که براش صفحه بندی بزارم . 

توی منابع خارجی گشتم ولی چیزی دستگیرم نشد . 

اگر میشه منو راهنمایی کنید . 

 

سلام و عرض خسته نباشید، چرا از jQuery برای صفحه بندی استفاده نمی‌کنید؟

منظورم اینکه دیگه نهایتاً شما 30 یا 50 عنوان پست می‌خواهید یه همچین جایی

یه کوئری بنویسید که 50 عنوان پست رو به شما تحویل بده، بعد با jQuery این 50 عنوان رو صفحه بندی کنید

لینک به ارسال
در 20 ساعت قبل، nazanin123 گفته است :

اگر آنلاین هست آدرس صفحه مورد نظر رو بدید

خیر . متاسفانه روی لوکال هست

در 5 ساعت قبل، علی زینلی گفته است :

سلام و عرض خسته نباشید، چرا از jQuery برای صفحه بندی استفاده نمی‌کنید؟

منظورم اینکه دیگه نهایتاً شما 30 یا 50 عنوان پست می‌خواهید یه همچین جایی

یه کوئری بنویسید که 50 عنوان پست رو به شما تحویل بده، بعد با jQuery این 50 عنوان رو صفحه بندی کنید

خودم دنبالش بودم که اجاکس اینکارو بکنم . 

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

لینک به ارسال

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

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

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

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

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

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

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

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

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