miraziz

تغییر کارکرد پست قبلی و بعدی وردپرس

31 پست در این موضوع قرار دارد

سلام. دوستان همانطور که می دانید در وردپرس میتوان در انتهای مطلب امکانی را افزود که مخاطب با آنها به پست قبلی یا بعدی برود. ولی این اماکن بر اساس تاریخ انتشار مطالب عمل می کند. می خواستم بپرسم آیا امکانش هست که در کنار تاریخ انتشار، دسته را هم افزود. یعنی مثلا وقتی شما مطلبی را از دسته « اخبار» می بینید در قسمت پایین نوشته، پست قبلی و بعدی مربوط به دسته «اخبار» را بیاره. (منظورم اعمال بر فرزندترین دسته است) و اگر امکانش باشه مانند عکس زیر دو متن پست قبلی و پست بعدی را هم دستی بهش اضافه کنم/

5b8cc2b68fda6_Screenshot(89).png.b1981bb71f4a9d600426f3f557462aea.png

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

      <!-- /post-nav -->				
						
				<div class="post-nav">
			
					<?php
					$next_post = get_next_post();
					if (!empty( $next_post )): ?>
				
						<a class="post-nav-newer" title="<?php _e('Next post:', 'lingonberry'); echo ' ' . get_the_title($next_post); ?>" href="<?php echo get_permalink( $next_post->ID ); ?>"><?php echo get_the_title($next_post); ?> &raquo;</a>
				
					<?php endif; ?>
				
					<?php
					$prev_post = get_previous_post();
					if (!empty( $prev_post )): ?>
				
						<a class="post-nav-older" title="<?php _e('Previous post:', 'lingonberry'); echo ' ' . get_the_title($prev_post); ?>" href="<?php echo get_permalink( $prev_post->ID ); ?>">&laquo; <?php echo get_the_title($prev_post); ?></a>
				
					<?php endif; ?>
					
					<div class="clear"></div>
				
				</div> 
	<!-- /post-nav -->

 

ویرایش شده در توسط miraziz
0

به اشتراک گذاری این پست


لینک به پست

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

// Add classes to next_posts_link and previous_posts_link
add_filter('next_posts_link_attributes', 'lingonberry_posts_link_attributes_1');
add_filter('previous_posts_link_attributes', 'lingonberry_posts_link_attributes_2');

function lingonberry_posts_link_attributes_1() {
    return 'class="post-nav-older"';
}
function lingonberry_posts_link_attributes_2() {
    return 'class="post-nav-newer"';
}

 

0

به اشتراک گذاری این پست


لینک به پست

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

0

به اشتراک گذاری این پست


لینک به پست

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

دسته بندی رو در اطلاعات پست که نوشته!

0

به اشتراک گذاری این پست


لینک به پست
در 59 دقیقه قبل، radintaban گفته است :

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

دسته بندی رو در اطلاعات پست که نوشته!

نه. الان پست قبلی و بعدی را بر اساس تاریخ انتشار نشون میده. یعنی فرقی نمیکنه مطالب مربوط به کدوم دسته باشند. ولی من می خواهم مطلب قبلی و بعدی همون دسته را نشون بده.

0

به اشتراک گذاری این پست


لینک به پست
در 26 دقیقه قبل، miraziz گفته است :

@mehran-be سلام. آقا مهران در این مورد اطلاعاتی دارین؟

سلام

 

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

0

به اشتراک گذاری این پست


لینک به پست
در 1 ساعت قبل، mehran-be گفته است :

سلام

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

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

وقتی از گوگل به یک مطلب از دسته مثلا «ایلهان» انتقال داده می شوم. در انتهای مطلب که بر روی پست بعدی کلیک می کنم. از اون دسته‌ی «ایلهان» خارج میشه و پستی از یک دسته‌ی دیگه مثلا «اورهان» را نشون میده. ولی بعد از اون درست کار می کنه. یعنی تو مطالب دسته ی اورهان درست یک به یک جابجا میشه. هر دوی این دسته ها هم زیر مجموعه‌ی یک دسته مثلا شاعران ترکیه هستند. در واقع در مرحله ی اول اون مشکل را داره. میشه فهمید به چه علت میتونه باشه

<?php
$post_id = $post->ID; // Get current post ID
$cat = get_the_category(); 
$current_cat_id = $cat[0]->cat_ID; // Get current Category ID 

$args = array('category'=>$current_cat_id,'orderby'=>'post_date','order'=> 'DESC');
$posts = get_posts($args);
// Get IDs of posts retrieved by get_posts function
$ids = array();
foreach ($posts as $thepost) {
    $ids[] = $thepost->ID;
}
// Get and Echo the Previous and Next post link within same Category
$index = array_search($post->ID, $ids);
$prev_post = $ids[$index-1];
$next_post = $ids[$index+1];
?>

<?php if (!empty($prev_post)){ ?> <a class="previous-post" rel="prev" href="<?php echo get_permalink($prev_post) ?>"> <span class="meta-icon"><i class="fa fa-angle-left fa-lg"></i></span> Previous</a> <?php } ?>

<?php if (!empty($next_post)){ ?> <a class="next-post" rel="next" href="<?php echo get_permalink($next_post) ?>">Next <span class="meta-icon"><i class="fa fa-angle-right fa-lg"></i></span> </a> <?php } ?>

 

ویرایش شده در توسط miraziz
0

به اشتراک گذاری این پست


لینک به پست
در 38 دقیقه قبل، miraziz گفته است :

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

وقتی از گوگل به یک مطلب از دسته مثلا «ایلهان» انتقال داده می شوم. در انتهای مطلب که بر روی پست بعدی کلیک می کنم. از اون دسته‌ی «ایلهان» خارج میشه و پستی از یک دسته‌ی دیگه مثلا «اورهان» را نشون میده. ولی بعد از اون درست کار می کنه. یعنی تو مطالب دسته ی اورهان درست یک به یک جابجا میشه. هر دوی این دسته ها هم زیر مجموعه‌ی یک دسته مثلا شاعران ترکیه هستند. در واقع در مرحله ی اول اون مشکل را داره. میشه فهمید به چه علت میتونه باشه

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

0

به اشتراک گذاری این پست


لینک به پست
در 3 ساعت قبل، mehran-be گفته است :

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

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

<ul class="pager">
                <?php if ( get_previous_post() != null ) : ?>
                  <li class="previous">
                    <span class="nav-previous">
                      <?php 
                        $singular_nav_previous_text   = apply_filters( 'tc_singular_nav_previous_text', _x( '&larr;' , 'Previous post link' , 'customizr' ) );
                        previous_post_link( '%link' , '<span class="meta-nav">' . $singular_nav_previous_text . '</span> %title' ); 
                      ?>
                    </span>
                  </li>
                <?php endif; ?>
                <?php if ( get_next_post() != null ) : ?>
                  <li class="next">
                    <span class="nav-next">
                      <?php
                        $singular_nav_next_text       = apply_filters( 'tc_singular_nav_next_text', _x( '&rarr;' , 'Next post link' , 'customizr' ) );
                        next_post_link( '%link' , '%title <span class="meta-nav">' . $singular_nav_next_text . '</span>' ); 
                        ?>
                    </span>
                  </li>
                <?php endif; ?>
              </ul>

 

کد توابعش

add_filter( 'get_next_post_join', 'navigate_in_same_taxonomy_join', 20);
add_filter( 'get_previous_post_join', 'navigate_in_same_taxonomy_join', 20 );
function navigate_in_same_taxonomy_join() {
	global $wpdb;
	return " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
}


add_filter( 'get_next_post_where' , 'navigate_in_same_taxonomy_where' );
add_filter( 'get_previous_post_where' , 'navigate_in_same_taxonomy_where' );
function navigate_in_same_taxonomy_where( $original ) {
	global $wpdb, $post;
	$where 		= '';
	$taxonomy  	= 'category';
	$op 		= ('get_previous_post_where' == current_filter()) ? '<' : '>';
	$where 		= $wpdb->prepare( "AND tt.taxonomy = %s", $taxonomy );
	if ( ! is_object_in_taxonomy( $post->post_type, $taxonomy ) )
		return $original ;

	$term_array = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );

	$term_array = array_map( 'intval', $term_array );

	if ( ! $term_array || is_wp_error( $term_array ) )
		return $original ;

	$where 		= " AND tt.term_id IN (" . implode( ',', $term_array ) . ")";
	return $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $post->post_date, $post->post_type );
}

 

0

به اشتراک گذاری این پست


لینک به پست

سلام. دوستان من از طریق سایت های خارجی متوجه شدم که کد زیر ناوبری پست های وردپرس را درون یک دسته انجام می دهد. in_same_term

ولی دسته های فرزند را در نظر نمی گیرد و فقط بین دسته والد جابجا میشه. grandchild_term

چگونه میشه کاری کرد که فرزندترین دسته را هم در نظر بگیرد؟

<?php previous_post_link( '&laquo; %link', '%title', true ); ?> | 
<?php next_post_link( '%link &raquo;', '%title', true ); ?>

 

0

به اشتراک گذاری این پست


لینک به پست
در 1 ساعت قبل، miraziz گفته است :

چگونه میشه کاری کرد که فرزندترین دسته را هم در نظر بگیرد؟

سلام

 

تابع زیر رو بذارید توی فایل functions.php قالب.

function mehran_exclude_all_except_last_child($post = null) {
	
	$post = get_post($post);
	
	if(!$post)
		
		return array();
		
	$cats = get_the_category($post->ID);
	
	if(empty($cats))
		
		return array();
		
	$excluds = array();
		
	foreach($cats as $cat) {
	
		if($cat->parent != 0)
			
			continue;	
		
		$excluds[] = $cat->term_id;
			
	}
	
	return $excluds;
	
}

بعدش که میخواید نمایش بدید قبل و بعد رو به شکل زیر عمل کنید.

<?php

$excluds = mehran_exclude_all_except_last_child(get_queried_object_id());

previous_post_link('&laquo; %link', '%title', true, $excluds);

next_post_link('%link &raquo;', '%title', true, $excluds);

?>

احتمال داره درست عمل کنه البته مطمئن نیستم.

2

به اشتراک گذاری این پست


لینک به پست
در 8 دقیقه قبل، mehran-be گفته است :

سلام

احتمال داره درست عمل کنه البته مطمئن نیستم.

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

0

به اشتراک گذاری این پست


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

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

آره فک میکردم انقدر ساده نباشه.

0

به اشتراک گذاری این پست


لینک به پست
در 16 دقیقه قبل، mehran-be گفته است :

آره فک میکردم انقدر ساده نباشه.

آره من خودم یک هفته است از سایت های خارجی کدهای مختلفی را اتحان می کنم فقط یک کدی بود که تا حدودی درست کار کرد که بالا نوشته بودم. جالب اینجاست که خود کد وردپرس بر روی دسته مادر کاملا درست و عالی کار میکنه ولی برای دسته ی فرزند دنگ و فنگ داره!

0

به اشتراک گذاری این پست


لینک به پست
در 23 ساعت قبل، mehran-be گفته است :

آره فک میکردم انقدر ساده نباشه.

سلام. آقا مهران با همین کد ساده هم خیلی خوب کار کرد. می دونین قضیه از چه قرار بود. ترتیب دسته بندی زیر را در نظر بگیرید

-شعر
--شاعران آمریکا
--- امیلی دیکنسون

من هنگام ارسال پست در دسته‌بندی تیک هر سه گزینه‌ی بالا را می زدم. درحالی که اگر تنها تیک دسته «امیلی دیکنسون» را بزنم کد به درستی کار می‌کنه/

حالا می‌خواستم بدونم اگر دیگر دسته های والد را تیک نزنم در مورد سئو بد است.

 

@4M!R

0

به اشتراک گذاری این پست


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

من هنگام ارسال پست در دسته‌بندی تیک هر سه گزینه‌ی بالا را می زدم. درحالی که اگر تنها تیک دسته «امیلی دیکنسون» را بزنم کد به درستی کار می‌کنه

خوب اگر شما فقط 1 دسته داشته باشید همون پارامتر سوم اون دو تابع رو true بذارید نتسجه درست باید باشه و احتیاجی به تابع من نیست.

0

به اشتراک گذاری این پست


لینک به پست
در 7 دقیقه قبل، mehran-be گفته است :

خوب اگر شما فقط 1 دسته داشته باشید همون پارامتر سوم اون دو تابع رو true بذارید نتسجه درست باید باشه و احتیاجی به تابع من نیست.

در واقع دسته هایی که بالا نوشتم زیر مجموعه ی هم هستند. یعنی فقط فرزندترین دسته‌ را تیک بزنم دیگه.

فقط کد زیر عنوان مطلب را نشون میده. اگر بخواهم به جای عنوان متن دلخواه. مانند پست قبلی - پست بعدی را نشون بده چه تغییری بهش بدم

<?php previous_post_link( '« %link', '%title', true ); ?> | 
<?php next_post_link( '%link »', '%title', true ); ?>

 

0

به اشتراک گذاری این پست


لینک به پست
در 51 دقیقه قبل، miraziz گفته است :

سلام. آقا مهران با همین کد ساده هم خیلی خوب کار کرد. می دونین قضیه از چه قرار بود. ترتیب دسته بندی زیر را در نظر بگیرید

-شعر
--شاعران آمریکا
--- امیلی دیکنسون

من هنگام ارسال پست در دسته‌بندی تیک هر سه گزینه‌ی بالا را می زدم. درحالی که اگر تنها تیک دسته «امیلی دیکنسون» را بزنم کد به درستی کار می‌کنه/

حالا می‌خواستم بدونم اگر دیگر دسته های والد را تیک نزنم در مورد سئو بد است.

 

@4M!R

نه موردی نداره  

1

به اشتراک گذاری این پست


لینک به پست
در 1 ساعت قبل، miraziz گفته است :

فقط کد زیر عنوان مطلب را نشون میده. اگر بخواهم به جای عنوان متن دلخواه. مانند پست قبلی - پست بعدی را نشون بده چه تغییری بهش بدم

دو تابع زیر رو توی فایل functions.php قالب سایت قرار بدید.

function mehran_next_post_title($title) {
	
	return 'پست بعدی';
	
}

function mehran_previous_post_title($title) {
	
	return 'پست قبلی';
	
}

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

<?php

add_filter('the_title', 'mehran_previous_post_title');

previous_post_link('« %link', '%title', true);

add_filter('the_title', 'mehran_next_post_title');

next_post_link('%link »', '%title', true);

remove_filter('the_title', 'mehran_previous_post_title');
remove_filter('the_title', 'mehran_next_post_title');

?>

 

3

به اشتراک گذاری این پست


لینک به پست
در 5 ساعت قبل، mehran-be گفته است :

دو تابع زیر رو توی فایل functions.php قالب سایت قرار بدید.

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

 

فقط آقا مهران من چگونه به اینها کلاس اضافه کنم. چون باید برای «پست قبلی» و «پست بعدی» جداگانه استایل و خصوصا float بدم.

0

به اشتراک گذاری این پست


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

فقط آقا مهران من چگونه به اینها کلاس اضافه کنم. چون باید برای «پست قبلی» و «پست بعدی» جداگانه استایل و خصوصا float بدم.

والا سخته کلاس اضافه کردن بهشون با استفاده از اتریبیوت rel شون سلکتشون کنید.

a[rel=prev]

و

a[rel=next]

 

0

به اشتراک گذاری این پست


لینک به پست
در 29 دقیقه قبل، mehran-be گفته است :

والا سخته کلاس اضافه کردن بهشون با استفاده از اتریبیوت rel شون سلکتشون کنید.


a[rel=prev]

و

a[rel=next]

 

متوجه نشدم. یعنی یک تگ A باز کنم و در rel اش کدهای php را قرار دهم؟

0

به اشتراک گذاری این پست


لینک به پست
در 52 دقیقه قبل، miraziz گفته است :

متوجه نشدم. یعنی یک تگ A باز کنم و در rel اش کدهای php را قرار دهم؟

نه اینا سلکتور CSS هست.

https://wpu.ir/aur2e

0

به اشتراک گذاری این پست


لینک به پست
در 8 ساعت قبل، mehran-be گفته است :

نه اینا سلکتور CSS هست.

https://wpu.ir/aur2e

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

<div>
   <div class="previous-post ">
     <?php
       add_filter('the_title', 'mehran_previous_post_title');
       previous_post_link('« %link', '%title', true);
       remove_filter('the_title', 'mehran_previous_post_title');
     ?>
    </div>					
    <div class="next-post ">
      <?php
        add_filter('the_title', 'mehran_next_post_title');
        next_post_link('%link »', '%title', true);
        remove_filter('the_title', 'mehran_next_post_title');
      ?>
    </div>
</div>
	/* ناوبری شعر   --------------------------------------- */
.previous-post, .next-post {
    color: #fff;
    background-color: #999;
    text-align: center;
    height: 26px;
    line-height: 24px;
    font-size: 14px;
    padding: 0 10px;
    margin-bottom: 30px;
    text-transform: uppercase;	
}
.previous-post:hover, .next-post:hover {background-color: #666; color:#fff;}

.previous-post a, .next-post a{color: #fff;}
.previous-post a:hover, .next-post a:hover{color: #fff;}

.previous-post {float: right !important; margin-right:-1%; border-radius: 9px 0px 0px 9px;}
.next-post {float: left !important; margin-left: -1%; border-radius: 0px 9px 9px 0px;}

 

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری