رفتن به مطلب

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


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

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

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

مثال :

متن خبر

...............................................

برچسب ها : ایران آمریکا روابط تجاری تحریم

مطالب دیگر از این کشور :

. آمریکا تحریمهای ایران را برای یک سال دیگر تمدید کرد . ( 1392/05/10)

. ایران تحریمهای آمریکا را ناجوانمردانه خواند. (1392/05/01)

. صنعت خودرو ایران در رکود قرار گرفت - تحریم دلیل اصلی

. آمریکا با برزیل وارد مذاکره تجارت آزاد شد.

لینک به ارسال

تا جایی که من فهمیدم شما کل دسته بندی اخبار رو بر اساس تگ ها قرار دادید و برای اینکه بخواهید مطالب مربوط به اون تگ ها رو بیارید مثلا 4 تای آخر رو باید query بگیرید

و برای اینکار فکر کنم اینجوری بشه


<?php
$args = array(
'posts_per_page'=> 4 ,
'tax_query' => array(
array(
'taxonomy' => 'post',
'field' => 'tag',
'terms' => 'برچسب مورد نظر',
), )
);
$the_query = new WP_Query($args );
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li class="">'?>

<h2><?php the_title();?></h2>
<? } } ?>

ویرایش شده توسط Mekaeil Andisheh
لینک به ارسال
  • 1 ماه بعد...

من از این کد استفاده کردم برای مطالب مرتبطم . خوب جواب میده. حالا تو این چطور برای تگ شرطی بذارم ؟ تگی که مربوط به آی دی کشورها باشه.

علاوه بر اون چطور بهش استایل بدهم ؟

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'showposts'=>2, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {

while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>

<?php
}
echo '</ul>';

}

}
?>

لینک به ارسال

در این بخش آی دی تگ را وارد کنید


$tag_ids = array();

مثل


$tag_ids = array(6,7);

و


<li>

را تغییر دهید به


<li class="exampleClassName">

یا هر کلاس دیگری و به آن کلاس استایل دهید

البته کد شما بر اساس برچسب تنظیم شده برای متا ها می تونید از ژنراتور کوئری ساز استفاده کنید و در بخش زمینه دلخواه نام زمینه مورد نظرتون رو بگذارید

لینک به ارسال

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

اما بعضی تگ ها هستند که پراستفاده نیستند و اگر من بتوانم مطالب مرتبطم را بر اساس این تگ ها نمایش بدهم به نظر بهترین نتیجه را می گیرم.

مثال :

تگ های پست اول :

1- ایران ، بانک ، بانک مرکزی ، اعتبار اسنادی

تگ های پست دوم :

-- ایران ، بانک ، بان مرکزی ، برات بانکی

تگ های پست سوم :

1- ایران ، بانک ، بانک ملت ، اعتبار اسنادی

تگ های پست چهارم :

1- ایران ، بانک ، بانک مرکزی ، بانک ملت

خوب نگاه کنید اگر کد من از تگ ایران استفاده کنه خیلی آیتم ها برای نمایش وجود خواهد داشت. در صورتی که اگر از تگ های " بانک ملت " و " اعتبار اسنادی " استفاده کنه که کمتر استفاده می شه می تونه مطالبی که بیشترین ربط به موضوع را دارد انتخاب کند.

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

لینک به ارسال
  • 7 ماه بعد...

من تو سایتم، چندتا اسم دارم که هر اسم، صفحه مخصوص به خودش رو داره

اتفاقات زیادی حول این اسامی رخ میده

میخوام ده اتفاق اخیر رو زیر صفحه همون فرد نمایش بدم و اگه مطالب بیشتری وجود داشت، لینکی وجود داشته باشه تا بشه بقیه مطالب (و 10 مطلب قبلی) رو در یک صفحه دیگه نشون داد

راهی که به ذهنم میرسه اینه که به هرفرد یک تگ خاص اختصاص بدم و اون تگ رو کوئری بگیرم و ده پست رو نمایش بدم. ولی نمیدونم مطالب بیشتر رو چطور باید نمایش داد

لینک به ارسال

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

لینک به ارسال

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

این لینک رو ببینید: لینک

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

لینک به ارسال

مثلاً در انتهای فایل single.php قرار بدید:


<?php
$authors_posts = get_posts( array( 'author' => $authordata->ID, 'post__not_in' => array( $post->ID ), 'posts_per_page' => 20 ) );
?>
<ul>
<?php foreach ( $authors_posts as $authors_post ) { ?>
<li><a href="<?php echo get_permalink( $authors_post->ID ); ?>">
<?php echo apply_filters( 'the_title', $authors_post->post_title, $authors_post->ID ); ?>
</a></li>
<?php } ?>
همه آثار: <?php the_author_posts_link(); ?>
</ul>

می‌تونید the_post_thumbnail و the_excerpt و یا هر دیتای دیگری هم که مایل بودید اضافه کنید

ویرایش شده توسط isk
لینک به ارسال
مثلاً در انتهای فایل single.php قرار بدید:
 $authordata->ID, 'post__not_in' => array( $post->ID ), 'posts_per_page' => 20 ) ); ?>[list]
[*][url="<?php%20echo%20get_permalink(%20$authors_post->ID%20);%20?>"]post_title, $authors_post->ID ); ?> [/url]
همه آثار:
[/list]

می‌تونید the_post_thumbnail و the_excerpt و یا هر دیتای دیگری هم که مایل بودید اضافه کنید

نشد

اول اینکه: مطالب مرتبط با اون فرد رو برام نشون نداد. اون لینکی که خدمتتون نشون دادم، مطالب مرتبط با هر فرد (مثلا سعید مستغاثی) رو زیر صفحه اون نشون میداد

دوم اینکه: در انتهای 20 تا مطلب، اسم اکانت کاربری من رو نشون میده و میگه: مطالب مرتبط با احسان. در حالی که میخوام مطالب مرتبط با اون فرد (مثلا سعید مستغاثی) رو نمایش بده

فکر میکنم این کدی که دادید، مطالب مربوط به نویسنده (پست کننده) اونها رو نمایش میده در حالی که نویسنده همه مطالب سایت، یک نفر، یعنی من هستم!

لینک به ارسال

شما سایت خودتون رو با یک نویسنده با سایت دیگری که چندین نویسنده داره مقایسه می‌کنید و این اشتباهه. شما مسئله‌ی خودتون رو مطرح کنید بهتره و به سایت دیگران کاری نداشته باشید.

مسئله‌ی شما دو حالت بیشتر نداره:

1 - تنها نویسنده‌ی سایت شمایید و مطالبی رو با ذکر لقب "نویسنده" به سایرین مثلاً: امید، اوباما، ژان ژاک روسو نسبت می‌دید.

2 - سایت شما چندین کاربر با نقش نویسنده داره که هریک عملاً و مستقلاً با نام خودشون در سایت شما اقدام به نویسندگی می‌کنند.

اگر 1: راه حل همونی هست که در پست 8 گفتم

اگر 2: راه حل همونی هست که در پست 10 گفتم

لینک به ارسال

شما سایت خودتون رو با یک نویسنده با سایت دیگری که چندین نویسنده داره مقایسه می‌کنید و این اشتباهه. شما مسئله‌ی خودتون رو مطرح کنید بهتره و به سایت دیگران کاری نداشته باشید.

مسئله‌ی شما دو حالت بیشتر نداره:

1 - تنها نویسنده‌ی سایت شمایید و مطالبی رو با ذکر لقب "نویسنده" به سایرین مثلاً: امید، اوباما، ژان ژاک روسو نسبت می‌دید.

2 - سایت شما چندین کاربر با نقش نویسنده داره که هریک عملاً و مستقلاً با نام خودشون در سایت شما اقدام به نویسندگی می‌کنند.

اگر 1: راه حل همونی هست که در پست 8 گفتم

اگر 2: راه حل همونی هست که در پست 10 گفتم

اگه بخوام به هر مطلب نویسنده اختصاص بدم، چکار باید کرد؟

لینک به ارسال

اگر واقعاً چنین نویسنده ایی وجود نداره کار مناسبی نیست، اما به هر حال می‌تونید در بخش کاربران تولیدش کنید و در زمان نوشتن پست در باکس نویسنده نام اون نویسنده رو انتخاب کنید و بقیه ماجرا که در پست 10 آمده

اما بهتر اینه که زمینه دلخواهی به اسم مثلاً author_post تولید کنید و برای هر پست مقدار مورد نظر رو بهش بدید: مثلاً امید، اوباما، برادر مظفر و ادامش همونی میشه که در پست 8 آمده یعنی کوئری برمبنای زمینه‌های دلخواه

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

اگر واقعاً چنین نویسنده ایی وجود نداره کار مناسبی نیست، اما به هر حال می‌تونید در بخش کاربران تولیدش کنید و در زمان نوشتن پست در باکس نویسنده نام اون نویسنده رو انتخاب کنید و بقیه ماجرا که در پست 10 آمده

اما بهتر اینه که زمینه دلخواهی به اسم مثلاً author_post تولید کنید و برای هر پست مقدار مورد نظر رو بهش بدید: مثلاً امید، اوباما، برادر مظفر و ادامش همونی میشه که در پست 8 آمده یعنی کوئری برمبنای زمینه‌های دلخواه

یه چیزی میخوام بگم، امیدوارم از من ناراحت نشید:

راهی که به ذهنم میرسه اینه که به هرفرد یک تگ خاص یا هر چیز دیگه اختصاص بدم و اون تگ رو کوئری بگیرم و ده پست رو نمایش بدم. ولی نمیدونم مطالب بیشتر رو چطور باید نمایش داد

راستش مشکل من اینه که میخوام 10 تا مطلب رو ذیل صفحه هر فرد نمایش بدم، ولی لینکی برای مشاهده همه مطالب مرتبط با اون تگ هم وجود داشته باشه تا اگه کسی خواست باقی مطالب رو ببینه، با کلیک روی اون به خواسته ش برسه

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

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

واقعیت اینه که ناراحت میشم این جور مواقع؛ نه از شما بلکه از سیستم آموزشی که متاسفانه محصولاتش رو با ذهن انتزاعی پرورش نمیده.

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

در پست 12 ، دو مسیر کاملاً متفاوت ارائه شد. اول انتخاب کنید کدوم مسیر رو میخواین طی کنین - بعد میرسیم به طی مسیر و حل مسئله.

لینک به ارسال

واقعیت اینه که ناراحت میشم این جور مواقع؛ نه از شما بلکه از سیستم آموزشی که متاسفانه محصولاتش رو با ذهن انتزاعی پرورش نمیده.

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

در پست 12 ، دو مسیر کاملاً متفاوت ارائه شد. اول انتخاب کنید کدوم مسیر رو میخواین طی کنین - بعد میرسیم به طی مسیر و حل مسئله.

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

لینک به ارسال

البته زمینه‌های دلخواه با تگ‌ها متفاوتند.

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

برای هر پست زمینه‌ی دلخواهی به نام مثلاً: auth ایجاد کنید و در هر پست مقدار مورد نظرتون رو بهش بدید. مثلاً: علی - حسن - حسین

در جای مناسبی از single.php قرار بدید:


<?php
$author_post = get_post_custom_values( 'auth' );
$author_argu = array(
'numberposts' => 5,
'post_type' => 'post',
'post_status' => 'publish',
'meta_value' => $author_post
);
$posts = get_posts($author_argu); ?>
<ul>
<?php foreach($posts as $post) { ?>
<li><a href="<?php echo get_permalink(); ?>"><?php echo $post->post_title; ?></a></li>
<?php } ?>
<a href="other-from-this-author.php">سایر نوشته‌های ایشان</a>
</ul>

این برای نمایش چند نوشته از همین نویسنده

سپس برگه ایی با قالب دلخواه و نام مثلاً : other-from-this-author.php تولید کنید (در بخش آموزش بسیار تکرار شده) و درون اون همین کوئری رو با تغییراتی ایجاد کنید تا همه‌ی نوشته های همین شخص رونمایش بده - تغییرات به این دلیل هست که در این برگه دیگه خبری از پست نیست بنابراین باید meta value ها رو بصورت گلوبال فراخوانی کنید.

هر وقت انجام شد بفرمایید تا نحوه‌ی انتقال متغیر از پست به این برگه رو هم قرار بدم - تا این برگه بتونه بفهمه که نوشته‌های کدوم نویسنده رو باید نمایش بده

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

کارهایی که من انجام دادم ایناست. اگه اشتباهی دارم، شما اصلاح کنید:

فایل page.php رو کپی کردم و با اسمی که تو کد بود، تغییر نام دادم.

کدها رو تو اون وارد کردم.

زمینه دلخواه رو هم ایجاد کردم و کد بالا رو هم در single وارد کردم

فقط یه سوال: چرا این کد، مطلبی به من اون 5 مطلبی رو که در کد وارد شده، نشون نمیده؟ و فقط میگه "سایر نوشته‌های ایشان" ؟

لینک به ارسال

قسمت بالای فایل برگه‌ی جدیدی که ساختید باید شبیه زیر باشه:


<?php
/* Template Name:my-page-template */
get_header(); ?>

بعد در پنل وردپرس برگه‌ی جدیدی تولید کنید (افزودن برگه) اما بجای قالب پیشفرض، قالب my-page-template باید انتخاب بشه.

در مورد دوم هم باید کدها رو خارج از لوپ قرار بدید - در صورت امکان کد single.php رو اینجا بذارید.

لینک به ارسال

یه نکته دیگه هم هست

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

ولی وقتی با پوسته پیشفرض اجرا میکنم، خوبه و مشکلی نیست

برای اطمینان از اینکه آیا کد مشکلی داره یا نه، یک کوئری دیگه رو جایگزین کردم، ولی اون رو هم اجرا نکرد و صفحه سفید شد

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

مشکلش رو نمیفهمم :-/

لینک به ارسال

فعلاً مسیر رو با پوسته‌ی دیفالت طی کنید - بعد که همه چیز کامل شد به مشکلات این پوسته رسیدگی بشه

یه نسخه از فایل page.php و single.php پوسته‌ی سالم رو اینجا پیوست کنید.

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

فعلاً مسیر رو با پوسته‌ی دیفالت طی کنید - بعد که همه چیز کامل شد به مشکلات این پوسته رسیدگی بشه

یه نسخه از فایل page.php و single.php پوسته‌ی سالم رو اینجا پیوست کنید.

سلام

بابت تاخیر عذر میخوام

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

نمیشه ایراد همین قالب رو رفع کرد؟

لینک به ارسال

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

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

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

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

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

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

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

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

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