alam7o

مشکل reset نشدن کوئری

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

سلام خدمت دوستان عزیز ،

بنده قصد شماره گذاری پست های یک دسته رو داشتم و با استفاده از کد زیر اونو انجام دادم

function Get_Post_Number($postID){
	$temp_query = $wp_query;
	$args = array ( 
	'orderby' => 'date', 
	'order'=> 'DESC', 
	'post_type' => 'post', 
	'posts_per_page' => '-1' );
	$counter = 1;
	$postCount = 0;
	$AVRank = null;
	$AVRank = new WP_Query($args);
	if($AVRank->have_posts()) {
	    while ($AVRank->have_posts()) : $AVRank->the_post();
	        if ($postID == get_the_ID()){
	            $postCount = $counter;
	        } else {
	            $counter++;
	        }
	endwhile; }
	wp_reset_query();
	$wp_query = $temp_query;
	return $postCount;
}

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

حلقه اول : عنوان Title 1

حلقه دوم که شامل 20 تا پست هست داخل حلقه اول

حالا این کد داخل حلقه دوم گذاشته میشه ولی بعد از کد برای مثال wp_title() میشه همون عنوان حلقه اول یعنی title 1 و برای همه ی پست ها هم تکرار میشه wp_reset_query هم گذاشتم واقعا دیگه نمیدونم مشکل از کجاس

 

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

0

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


لینک به پست

سلام

یعنی میخواید پست ها شماره گذاری بشن، ولی وقتی یک گروه شماره خوردن، برای گروه بعدی از 1 شروع نشه درسته؟

0

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


لینک به پست
در در 5/12/2020 at 09:32، Morteza گفته است :

سلام

یعنی میخواید پست ها شماره گذاری بشن، ولی وقتی یک گروه شماره خوردن، برای گروه بعدی از 1 شروع نشه درسته؟

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

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

function AvRankingNumbers(){
	$AVRankargs = array (  
	'order'=> 'DESC', 
	'meta_key' => 'totalreviews', 
	'orderby'=> 'meta_value_num', 
	'post_type' => 'post', 
	'posts_per_page' => '-1' );
	$AVRank = get_posts( $AVRankargs );
	$counter = 1;
	$counts = 0;
	$postnumbercount = $AVRank->post_count;
	
	if($AVRank) :
	    foreach ($AVRank as $post) : 
		setup_postdata($post);
	        $counts++;
			add_post_meta($post->ID, 'av_ranking', $counts, true);
			update_post_meta($post->ID, 'av_ranking', $counts);
		endforeach;
	endif;
}
add_action ( 'publish_post', 'AvRankingNumbers' );
add_action ( 'deleted_post', 'AvRankingNumbers' );
add_action ( 'edit_post', 'AvRankingNumbers' );

احساس میکنم هر بار که هر صفحه ای لود بشه این اجرا میشه

 

درواقع منظورم این هست که دارم از روش درستی استفاده می کنم ؟!

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

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


لینک به پست

کد بالا برای ذخیره/حذف یا ارسال نوشته جدید اجرا میشه.

میتونید یک متغییر بیرون حلقه تعریف و اون رو دال حلقه یکی یکی اضافه کنین.

 

1

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


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

کد بالا برای ذخیره/حذف یا ارسال نوشته جدید اجرا میشه.

میتونید یک متغییر بیرون حلقه تعریف و اون رو دال حلقه یکی یکی اضافه کنین.

 

متاسفانه در کدنویسی مبتدی هستم، امکانش هست با همین کد مثال بزنید ؟

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

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


لینک به پست

یک سوالی

چرا کوئری رو مستقیم توی حلقه پست نمیزارین؟

تابع نیازی نیست.

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

1

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


لینک به پست
//این حلقه اول هست که پست توش فراخوانی میشه
while ( have_posts() ) : the_post();
	// the_title ...
	// the_content
	// ...
		//اینجا حلقه دومم اجرا میشه
		if( have_rows('comp_post') ): while( have_rows('comp_post') ): the_row(); 
			$postinacf = get_sub_field('comppost', false, false);
		endwhile;endif;
		$args = array('post__in'=> ((!isset($postinacf) || empty($postinacf)) ? array(-1) : $postinacf),
		'posts_per_page' => -1,'order'=> 'DESC', 'meta_key' => 'totalreviews','orderby'=> 'meta_value_num');
		 
		 $AVPcomp_args = new WP_Query($args);
		 if ($AVPcomp_args->have_posts()) { 
			while($AVPcomp_args->have_posts()) : $AVPcomp_args->the_post();  
			//
			//
			// کدی که تو فانکشن گذاشتم قراره اینجا فراخوانی بشه
			//
			//
			endwhile; 
		  } 
		wp_reset_query(); // پایان حلقه دوم

endwhile; // پایان حلقه اول
نقل قول

چرا کوئری رو مستقیم توی حلقه پست نمیزارین؟

امتحان کردم اعداد رو درست نشون نمیداد همه پست های داخل لیست (حلقه دوم) شمارشون 1 میشد

add_action ( 'publish_post', 'AvRankingNumbers' );
add_action ( 'deleted_post', 'AvRankingNumbers' );
add_action ( 'edit_post', 'AvRankingNumbers' );

از طریق این روشی هم که کار میکنه نمیدونم کاره درستیه یا نه امیدوار بودم شما بهترین روش رو بهم بگید

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

 

0

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط amzzm75
      با سلام
      یکی از مشتریای من میخواد کل محصولات وب سایت دیجیکالا رو داخل سایت خودش کپی کنه (در واقع میخواد با سیستم همکاری در فروش دیجیکالا کار کنه)
      من داخل سایتش به یه مشکل خوردم
      یه افزونه دارم که محصولات کپی میکنه اولش هاست داشت و فضای هاستش پر شد گفتم بره سرور مجازی بگیره و ولی الان پردازشگر سرور مجازی توان نداره کپی کنه و با مشکل روبرو شده از طرفی نمیخواد اول کار خیلی هزینه کنه
      البته افزونه یه تنظیم داره که اگه عکس محصولات از خود دیجیکالا لود بشه دیگه راحت کپی میشه و مشکل پیش نمیاد
      ولی فکر میکنم به لحاظ سئو ضعف حساب میشه (برای همینم گفتم سرور بگیره که عکسا هم روی سایت خودش باشه)
      من بهش پیشنهاد دادم از سرور مجازی بیاد بیرون و با همون هاست اولیه و هاست دانلود کار کنه به طوریکه هاست دانلود بشه ساب دومین دامنه اصلی که برای سئو هم مشکلی ایجاد نشه ولی فکر نکنم شدنی باشه و فکر کنم هاست دانلود به یه دامنه جدا باید وصل بشه (من با هاست دانلود کار نکردم)
      میخواستم بدونم پیشنهاد شما چیه
      باتشکر
    • توسط armin1387
      سلام
      من وردپرسم رو روی هاست گیفگا ریختم. ولی وقتی می خوام وارد پوشه وردپرس بشم همچین خطای میده. 
      آدرس سایت : http://arnam.gigfa.com/wordpress/
      عکس خطا : 
       
    • توسط miladmoqaddam823
      دوستان سلام. 
      چطوری میتونم به انتهای صفحات کتگوری و برچسب ها، متن و توضیحات اضافه کنم؟
      به خیلی از فروشنده های قالب های وردپرس پیام دادم، هیچ کدوم این قابلیت رو ندارن
      حالا الان میخوام با وودمارت کار کنم، اما نتونستم راه حلی پیدا کنم برای این موضوع.
      بعضی قالب ها این امکان رو دارن، اما بالای صفحه نمایش میده، در حالیکه من میخوام انتهای صفحه و زیر محصولات باشه این توضیحات.
    • توسط vahidmontazeri
      دوستان سلام وقتتون بخیر.
      قصد دارم یه سایت وردپرسی بصورت VIP راه اندازی کنم بصورت فروشگاهی.
      به این صورته که کاربرا بعد از خرید اشتراک میتونن لینک دانلود رو مشاهده کنند. لینک دانلود فقط باید به کاربرای وی ای پی که لاگین شدن نمایش داده بشه.
      مسئله مهمتر اینه که اگر لینک دانلود بصورت یکتا بود و کاربرا خواستن لینک دانلود رو به دیگران بدن یا پخش کنن، کاربرای دیگه اجازه دانلود فایل رو نداشته باشن. خیلی دنبال همچین پلاگینی گشتم نبود. یعنی فقط محتوا رو مخفی میکرد اما چیزی برای محدود کردن لینک دانلود پیدا نکردم.
      از دوستانی که راه حلی دارن ممنون میشم راهنمایی کنن.
    • توسط saeidmz
      من نسخه فارسی زیان ووکامرس رو نصب کردم. وقتی میخوام فعالش کنم ارور میده که" شما اجازهٔ دسترسی به این برگه را ندارید."
      سطح دسترسی خودم هم چک کردم....php هم آپدیته... چیکار کنم؟ خیلی ضروریه://///