pirooz

عدم نمایش مطالب ظاهر شده در اسلایدر، در صفحه اصلی

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

سلام

اگر بخواهیم مطالبی که در حال حاضر در اسلایدر است، در صفحه اصلی نمایش داده نشود، از چه کوئری باید استفاده کنیم؟

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

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

منظور، استثناء کردن تعداد مشخصی از مطالب دسته اسلایدر است.

 

متشکرم.

 

0

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


لینک به پست

دوستان! توی اینترنت مطلبی را برای حل این مسئله پیدا کردم. راه حلش اینه که در کوئری اول که اسلایدر را می‌سازه، ID های  مربوط به هر پست را در یک متغیر ذخیره کنیم. به این صورت:

<?php
$do_not_duplicate = array(); // set befor loop variable as array

// 1. Loop
query_posts('ca=1,2,3&showposts=5');
while ( have_posts() ) : the_post();
    $do_not_duplicate[] = $post->ID; // remember ID's in loop
    // display post ...
    the_title();
endwhile;
?>

بعد، در کوئری دوم که مربوط می‌شه به مطالب اصلی صفحه، چک کنیم که کوئری استخراج شده، شامل ID های ذخیره شده در آرایه نباشد. به این صورت:

<?php
// 2. Loop
// another loop without duplicates
query_posts( array(
    'cat' => 456,
    'post__not_in' => $do_not_duplicate
    )
);
while ( have_posts() ) : the_post();
    // display posts...
        the_title();
endwhile;
?>

این کد به راحتی کار می‌کنه، البته اگر که هر دوتا کوئری داخل یک فایل باشد.

اما مشکل اینجاست که من کوئری مربوط به اسلایدر را در فایل header.php قرار دادم و کوئری مربوط به مطالب اصلی سایت در فایل index.php قرار دارد.

در این حالت،

$do_not_duplicate

مقدار null را بر می‌گرداند. چطور می‌تونم مقدار این آرایه را به فایل index.php منتقل کنم؟؟

0

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


لینک به پست

لطفاً....

0

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


لینک به پست

سلام ودرود خدمت شما

برای اینکه شما میخواهید پستی را ک به دسته اسلایدر اختصاص میدهید در صفحه اصلی منتشر نشه میتونید این کد را در فایل functions قالب  خود قرار دهید وای دی دسته مورد نظر قرار دهید:

<?php remove_action('wp_head', 'wp_generator');?>
<?php
 add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' );
function foo_modify_query_exclude_category( $query ) {
        if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) )
                $query->set( 'cat', '-10,-11,-20,-21' );
}
?>

موفق باشید

0

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


لینک به پست

دوست عزیز!

متشکرم از پاسخی که دادید.

اما همون طور که در متن سؤال آمده، من نمی‌خواهم به طور کامل دسته اسلایدر را از مطالب صفحه اصلی استثناء کنم.

بلکه پنج تا مطلبی که در دسته اسلایدر قرار دارند، در داخل اسلایدر نمایش داده می‌شود و تقریباً هر روز، این مطالب در حال اضافه شدن هستند.

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

 

متشکرم.

0

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


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

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

ببخشید! اصلاح می‌کنم: 

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

0

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


لینک به پست

ارسال شده در (ویرایش شده)

دوست عزیز با این کدی من خدمت شما دادم هیچوقت پستی را ک به دسته اسلایدر اختصاص میدهید در صفحه اصلی نمایش داده نمیشود شما بالاخره یک کوئری زدید روی دیتابیس حالا مثلا 5پست اخر را ازدیتابیس بخونه برای اسلایدر وبه ترتیب نزولی 5اسالاید در اسلایدر نمایش داده شود/اگر منظورتون متوجه شده باشم/:P

ویرایش شده در توسط mk-73
0

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


لینک به پست

دوست عزیز!

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

حالا می‌خواهم فقط پنج‌تای آخر (که در اسلایدر نمایش داده می‌شود)، در مطالب صفحه اصلی نمایش داده نشود.

نه اینکه کلاً هر مطلبی که دسته اسلایدر دارد در صفحه اصلی نمایش داده نشود. :huh:

0

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


لینک به پست
در در 1/30/2016 at 17:17، pirooz گفته است :

 


<?php
// 2. Loop
// another loop without duplicates
query_posts( array(
    'cat' => 456,
    'post__not_in' => $do_not_duplicate
    )
);
while ( have_posts() ) : the_post();
    // display posts...
        the_title();
endwhile;
?>

این کد به راحتی کار می‌کنه، البته اگر که هر دوتا کوئری داخل یک فایل باشد.

اما مشکل اینجاست که من کوئری مربوط به اسلایدر را در فایل header.php قرار دادم و کوئری مربوط به مطالب اصلی سایت در فایل index.php قرار دارد.

در این حالت،

$do_not_duplicate

مقدار null را بر می‌گرداند. چطور می‌تونم مقدار این آرایه را به فایل index.php منتقل کنم؟؟

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

مشکلم اینه که وقتی دوتا حلقه در یک فایل، مثلاً index.php قرار دارد، دقیقاً داره کار می‌کنه. اما وقتی که کد ۱ را در حلقه اول و در فایل header.php و کد ۲ را در حلقه دوم و در فایل index.php قرار می‌دهم، مقدار $do_not_duplicate خالی هست. :blink:

0

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


لینک به پست

ارسال شده در (ویرایش شده)

خب! بالاخره راه حل این مشکل را هم پیدا کردم.

اینجا اعلام کنم تا بقیه هم استفاده کنند.

کافی است عبارت global را هنگام تعریف متغیر، به کار ببریم.

بنابراین، کل کد به این صورت میشه:

 

global $do_not_duplicate;
$do_not_duplicate = array(); // set befor loop variable as array

// Loop 1
query_posts('ca=1,2,3&showposts=5');
while ( have_posts() ) : the_post();
    $do_not_duplicate[] = $post->ID; // remember ID's in loop
    // display post ...
    the_title();
endwhile;






// Loop 2
// another loop without duplicates
query_posts( array(
    'cat' => 456,
    'post__not_in' => $do_not_duplicate
    )
);
while ( have_posts() ) : the_post();
    // display posts...
        the_title();
endwhile;

 

در این حالت پست‌هایی که در حلقه اول نمایش داده می‌شوند، در حلقه دوم نمایش داده نخواهند شد.

 

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

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


لینک به پست

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

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

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

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


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

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

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


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