رفتن به مطلب

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


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

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

	<?php echo mehran_get_post_last_child_image(get_the_ID()); ?>
<?php child_cat (get_the_ID(), 'poetname', [1261]); ?>
					    <h2 class="post-title"><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

 

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

				<ul>
<?php $recent = new WP_Query("orderby=rand&showposts=4"); while($recent->have_posts()) : $recent->the_post();?>
<li><a alt="<?php the_title(); ?>" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a></li>
<?php endwhile; ?>
</ul>

 حالا من می خواستم که در کنار پست های تصادفی مانند کد اول نام آخرین دسته (نام شاعر) و تصویر آن دسته را هم نمایش دهم. خیلی ممنون می شوم اگر راهنمایی ام کنید.

Screenshot (54).png

لینک به ارسال
در 4 دقیقه قبل، mehran-b گفته است :

سلام و درود @miraziz

 

اون تابع child_cat بدنه تابعش چیه کداش؟

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

function mehran_get_post_last_child_image($post_id) {
	
	$cats = get_the_category($post_id);
	
	$childs = array();
	foreach($cats as $cat) {
		if($cat->category_parent !== 0)
			$childs[] = $cat->cat_ID;
	}
	
	if($childs === array())
		return;
	
	$last_child = max($childs);
	
	$images = get_option('taxonomy_image_plugin');
	$img_tag = wp_get_attachment_image($images[$last_child], 'thumbnail', false, array('class' => 'mehran'));
	
	if($img_tag === "")
		return;
	
return '<a href="'.esc_url(get_category_link($last_child)).'">'.$img_tag.'</a>';
	
}

 

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

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

بله این تابع رو که خودم نوشتم تابع child_cat رو بدنش رو یادم نیست.

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

بله این تابع رو که خودم نوشتم تابع child_cat رو بندش رو یادم نیست.

این هست؟


function child_cat ($pid, $class_name, $exclude) {
    $cat_arr = wp_get_post_categories ($pid);
    $child_id = max ($cat_arr);
    if ($exclude)
        if (in_array($child_id, $exclude))
            return;
    $child_name = get_the_category_by_ID ($child_id);
    $child_link = get_category_link ($child_id);
    if ($class_name)
        echo '<a href="'. $child_link .'" class="'. $class_name .'" rel="category tag">'. $child_name .'</a>';
    else
        echo '<a href="'. $child_link .'" rel="category tag">'. $child_name .'</a>';
}

 

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

این هست؟

درسته الان یادم اومد ماجراش چی بود.

جای اون حلقه تصادفیتون یعنی این:

<ul>
    <?php $recent = new WP_Query("orderby=rand&showposts=4"); while($recent->have_posts()) : $recent->the_post(); ?>
        <li>
            <a alt="<?php the_title(); ?>" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>">
                <?php the_title(); ?>
            </a>
        </li>
        <?php endwhile; ?>
</ul>

کد زیر رو قرار بدید.

<?php

$random = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'posts_per_page' => 4,
	'post_status' => 'publish'
));

if($random->have_posts()) :

	echo '<ul>';

	while($random->have_posts()) :
	
		$random->the_post();
		
?>

<li>
	<?php echo mehran_get_post_last_child_image($random->post->ID); ?>
	<?php child_cat($random->post->ID, 'poetname', [1261]); ?>
	<a alt="<?php the_title(); ?>" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>

<?php

	endwhile;
	
	wp_reset_postdata();
	
	echo '</ul>';

endif;

?>

 

لینک به ارسال

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

فقط یک مشکل کوچیک داشتم. حالا در li «عنوان مطلب» دقیقا جلوی «نام دسته» می آد. هر کاری هم می کنم نمی تونم ببرم پایین. میشه راهنمایی کوچیک بکنین که در cssاش چه چیز را باید رعایت کنم.

5b505cfebdd0a_Screenshot(55).png.5c42239bb215024541491b9d73be881e.png

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

فقط یک مشکل کوچیک داشتم. حالا در li «عنوان مطلب» دقیقا جلوی «نام دسته» می آد. هر کاری هم می کنم نمی تونم ببرم پایین. میشه راهنمایی کوچیک بکنین که در cssاش چه چیز را باید رعایت کنم.

فک میکنم یه همچین استایلی خوب باشه.

کد حلقه تصادفی میشه این.

<?php

$random = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'posts_per_page' => 4,
	'post_status' => 'publish'
));

if($random->have_posts()) :

	echo '<ul class="randompost">';

	while($random->have_posts()) :
	
		$random->the_post();
		
?>

<li>
	<?php echo mehran_get_post_last_child_image($random->post->ID); ?>
	<?php child_cat($random->post->ID, 'poetname', [1261]); ?>
	<a alt="<?php the_title(); ?>" title="<?php the_title(); ?>" class="post-link" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>

<?php

	endwhile;
	
	wp_reset_postdata();
	
	echo '</ul>';

endif;

?>

کد CSS استایل هم میشه کد زیر:

ul.randompost > li {
	overflow: auto;
    padding: 5px;
}

ul.randompost > li a {
	float: right;
}

ul.randompost > li a img.mehran {
	margin-bottom: 0;
}

ul.randompost > li a.poetname {
	float: none;
	display: inline-block;
    border-bottom: 1px solid transparent;
	padding: 6px;
}

ul.randompost > li a.post-link {
	float: none;
	display: block;
	line-height: normal;
	overflow: auto;
}

که کد مربوط به استایل باید در انتهای فایل style.css قرار بگیره.

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

فک میکنم یه همچین استایلی خوب باشه.

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

فقط تو اون حلقه تصادفی امکان داره که id برخی دسته ها را مستثنا کرد که نشون نده؟

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

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

قشنگ شد.

در 2 دقیقه قبل، miraziz گفته است :

فقط تو اون حلقه تصادفی امکان داره که id برخی دسته ها را مستثنا کرد که نشون نده؟

این قسمت کد:

$random = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'posts_per_page' => 4,
	'post_status' => 'publish'
));

رو اگر به این شکل کنید:

$random = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'posts_per_page' => 4,
	'post_status' => 'publish',
	'cat' => '-777,-888,-999'
));

دسته هایی که آیدشون 777 و 888 و 999 هست دیگه پستاشون نمایش داده نمیشه.

لینک به ارسال
در 13 دقیقه قبل، mehran-b گفته است :

دسته هایی که آیدشون 777 و 888 و 999 هست دیگه پستاشون نمایش داده نمیشه.

آقا من دستت را می بوسم. امیدوارم در برابر این زحمتات حداقل از شعرهای سایتم خوشتان آمده باشد

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

آقا من دستت را می بوسم.

شما بزرگواری.

در 17 دقیقه قبل، miraziz گفته است :

امیدوارم در برابر این زحمتات حداقل از شعرهای سایتم خوشتان آمده باشد

سایت که عالیه.

لینک به ارسال
  • 4 هفته بعد...
در در 7/19/2018 at 20:56، mehran-b گفته است :

رو اگر به این شکل کنید:


$random = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'posts_per_page' => 4,
	'post_status' => 'publish',
	'cat' => '-777,-888,-999'
));

دسته هایی که آیدشون 777 و 888 و 999 هست دیگه پستاشون نمایش داده نمیشه.

سلام. آقا مهران امروز برای کدهای بالا یک مشکلی عجیبی پیش اومده. در کد تعیین کردید که 4 عنوان پست را نشون بده ولی از امروز 5تا نشون میده. اگه 3 بنویسم 4تا نشون میده. یعنی یه دونه اضافه میکنه. این از چی میتونه باشه؟

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

سلام. آقا مهران امروز برای کدهای بالا یک مشکلی عجیبی پیش اومده. در کد تعیین کردید که 4 عنوان پست را نشون بده ولی از امروز 5تا نشون میده. اگه 3 بنویسم 4تا نشون میده. یعنی یه دونه اضافه میکنه. این از چی میتونه باشه؟

سلام

 

میتونه از پست ثابت باشه.

کد زیر رو تست کنید.

$random = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'ignore_sticky_posts' => 1,
	'posts_per_page' => 4,
	'post_status' => 'publish',
	'cat' => '-777,-888,-999'
));

 

لینک به ارسال
در 14 ساعت قبل، mehran-b گفته است :

سلام

میتونه از پست ثابت باشه.

کد زیر رو تست کنید.


$random = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'ignore_sticky_posts' => 1,
	'posts_per_page' => 4,
	'post_status' => 'publish',
	'cat' => '-777,-888,-999'
));

 

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

قادر به برقراری ارتباط با سایت برای بررسی خطاهای مهلک نمی‌باشیم، بنابراین تغییر PHP برگشت داده شد. شما بایستی تغییر فایل PHP خود را با استفاده از ابزارهای دیگر مانند استفاده از SFTP آپلود نمایید.

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

قادر به برقراری ارتباط با سایت برای بررسی خطاهای مهلک نمی‌باشیم، بنابراین تغییر PHP برگشت داده شد. شما بایستی تغییر فایل PHP خود را با استفاده از ابزارهای دیگر مانند استفاده از SFTP آپلود نمایید.

سلام

 

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

مثلا یکی از دلایلش میتونه Mod_security باشه. میتونید به هاستینگ پیام بدید و بگید Mod_security رو غیرفعال کنند احتمال داره درست بشه.

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

سلام

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

مثلا یکی از دلایلش میتونه Mod_security باشه. میتونید به هاستینگ پیام بدید و بگید Mod_security رو غیرفعال کنند احتمال داره درست بشه.

خیلی ممنون آقا مهران.

فقط این کد را میشه کاری کرد که از چهار عناون مطلبی که نشون میده، دوتای اول مربوط به همون آی‌دی دسته‌ی پست در حال مشاهده باشه؟

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

خیلی ممنون آقا مهران.

خواهش میکنم.

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

فقط این کد را میشه کاری کرد که از چهار عناون مطلبی که نشون میده، دوتای اول مربوط به همون آی‌دی دسته‌ی پست در حال مشاهده باشه؟

یه ذره پیچید میشه.

کد زیر رو قبل از

if($random->have_posts()) :

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

$post_cats = get_the_category();

if(!empty($post_cats))
	
	$cat_ids = wp_list_pluck($post_cats, 'term_id');
	
else
	
	$cat_ids = array();

$query1 = new WP_Query(array(
	'post_type' => 'post',
	'posts_per_page' => 2,
	'post_status' => 'publish',
	'cat' => $cat_ids
));

$query2 = new WP_Query(array(
	'post_type' => 'post',
	'orderby' => 'rand',
	'posts_per_page' => 2,
	'post_status' => 'publish'
));

$random = new WP_Query();

$random->posts = array_merge($query1->posts, $query2->posts);

$random->post_count = count($random->posts);

 

موفق باشید

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

کد زیر رو قبل از

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

موفق باشید

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

من می‌خواستم مثلا نام دسته ی فرزند من «احمد شاملو» است. حالا وقتی مخاطب شعری از شاملو را می خواند آن دو عنوان اولی در قسمت نمایش تصادفی مربوط به دسته احمد شاملو باشد

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

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

من می‌خواستم مثلا نام دسته ی فرزند من «احمد شاملو» است. حالا وقتی مخاطب شعری از شاملو را می خواند آن دو عنوان اولی در قسمت نمایش تصادفی مربوط به دسته احمد شاملو باشد

این که میگید آخرین مطالب سایته همون آخرین مطالب دسته اون مطلبه است ولی چون این آخرین دسته رو که اسم شاعره کار نداره کل دسته های مطلبه رو در نظر میگیره آخرین مطالب سایت هم میشه اون دو مطلب و گرنه آخرین مطالب دسته های مطلب جاری هم هست.

لینک به ارسال
در هم اکنون، mehran-b گفته است :

این که میگید آخرین مطالب سایته همون آخرین مطالب دسته اون مطلبه است ولی چون این آخرین دسته رو که اسم شاعره کار نداره کل دسته های مطلبه رو در نظر میگیره آخرین مطالب سایت هم میشه اون دو مطلب.

بله درست است. فقط کد انگار دسته مادر را در نظر میگیره. ترتیب دسته های سایت من اینگونه است. شعر -> شاعران ایرانی -> احمد شاملو   و یا شعر -> شاعران آمریکا -> چارلز بوکوفسکی.

حالا این کد فقط دسته ی مادر (شعر) را در نظر میگیره. در حالی که منظور من فرزندترین دسته مثل احمد شاملو و چارلز بوکفسکی است.

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

بله درست است. فقط کد انگار دسته مادر را در نظر میگیره. ترتیب دسته های سایت من اینگونه است. شعر -> شاعران ایرانی -> احمد شاملو   و یا شعر -> شاعران آمریکا -> چارلز بوکوفسکی.

حالا این کد فقط دسته ی مادر (شعر) را در نظر میگیره. در حالی که منظور من فرزندترین دسته مثل احمد شاملو و چارلز بوکفسکی است.

اوکی پس فرزند آخری رو دو پست آخرش رو نشون بده.

کدش آماده شد قرار میدم.

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

اوکی پس فرزند آخری رو دو پست آخرش رو نشون بده.

کدش آماده شد قرار میدم.

نه. دو پست از فرزند آخری را رندوم نشون بده. (یعنی فقط دو پست آخری فرزند آخر نباشه)

لینک به ارسال

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

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

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

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

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

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

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

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

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