معرفی تابع های وردپرس-قسمت سوم

علی حسین شهابی

1395/8/22

نظر0

سلامی دوباره

خب امروزم میریم که چندتا تابع دیگه از توابع وردپرس  رو باهم بررسی کنیم

بیشتر کاربرد تابع های امروز برای پرمالینک ها و تصاویر بندانشتی یا همان Post Thumbnail هستند.

 

۱۵- تابع get_permalink

این تابع ادرس پست یا پیج جاری رو برمی گرداند که در واقع همان permalink است.

پیوند یکتای یک نوشته را جهت استفاده در کدهای پی اچ پی برمی گرداند. این تابع پیوند یکتا را نمایش نمی دهد و همچنین می تواند بیرون از حلقه نیز استفاده گردد. نکته: اگر این تابع خارج از حلقه و مثلا در یک صفحه شامل مطالب (صفحه اصلی، بایگانی و…) بدون پارامتر ID استفاده گردد، نشانی آخرین نوشته حلقه را برمی گرداند و نه نشانی خود آن صفحه را.

<?php $permalink = get_permalink( $id, $leavename ); ?>

پارامتر $id : اختیاری است و می تواند آی دی post یا page باشد و اگر وارد نشود آی دی  post  یا page ‌جاری در آن قرار خواهد گرفت.

مثال :

<a href="<?php echo get_permalink( 268 ); ?>">My link to a post or page</a>

مثال :

Permalink for this post:
<?php echo get_permalink(); ?>

مثال : نمایش دو لینک به دو post  با Id های ۱ و ۱۰

<ul>
<li>MyBlog info:
    <ul>
    <li><a href="<?php echo get_permalink(1); ?>">About MyBlog</a></li>
    <li><a href="<?php echo get_permalink(10); ?>">About the owner</a></li>
    </ul>
</li>
</ul>

 

۱۶ – تابع get_post_permalink

این تابع هم شباهت بسیار زیادی با تابع قبلی (get_permalink) دارد و permalink  پست را برمیگرداند.

 <?php get_post_permalink( $id, $leavename, $sample ); ?>

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

 

۱۷ – تابع the_permalink

این تابع permalink  پست یا پیج رو نشان میدهد و برای نمایش نیازی به echo  ندارد.

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

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

 <?php the_permalink(); ?>

مثال :

This address for this post is: <?php the_permalink(); ?>

مثال : استفاده از این تابع درون تگ a

<a href="<?php the_permalink(); ?>">permalink</a>

 

۱۸ –  تابع post_permalink

پیوند یکتای یک نوشته از نوع دلخواه (custom post type) را بر می گرداند.

<?php echo post_permalink( $ID ); ?>

اگر

$ID

:  آیدی post یا page است که قصد دارید permalink آن را برگردانید.این پارامتر الزامی است.

 

 ۱۹ – تابع get_post_thumnbnail_id

خب تابع get_post_thumnbnail_id ۳ خروجی برمیگردانه و کلا برای بدست آوردن Id تصویر بند انگلشتی در پست مورد نظر است :

خروجی :

  • ۱گر برای پست مورد نظر تصویر بند انگشتی فعال بوده باشه  در نتیجه id اون تصویر رو برمیگردانه.
  • اگر برای پست مورد نظر تصویر بند انگشتی فعال باشه ولی تصویری براش انتخاب نکرده باشیم در نتیجه یک رشته ی خالی برمی گرداند.
  • اگر برای پست مورد نظر تصویر بند انگشتی فعال نباشه , False برمی گرداند.
<?php $post_thumbnail_id = get_post_thumbnail_id( $post_id ); ?>

اگر

$post_id

را وارد نکرده باشیم , به صورت پیش فرض پست جاری محسوب می شود.

 

مثال : تو این مثال از این تابع استفاده شده و برای برگرداند تمام متعلقات پست ها به جز تصویر اشون.

<?php

$args = array(
	'post_type'   => 'attachment',
	'numberposts' => -1,
	'post_status' => 'any',
	'post_parent' => $post->ID,
	'exclude'     => get_post_thumbnail_id(),
);

$attachments = get_posts( $args );

if ( $attachments ) {
	foreach ( $attachments as $attachment ) {
		echo apply_filters( 'the_title', $attachment->post_title );
		the_attachment_link( $attachment->ID, false );
	}
}

?>

 

۲۰ – تابع  get_the_post_thumbnail

این تابع یه تگ img برمی گرداند که شامل عکس پست مورد نظر است. به وسیله ی پارامترهای این تابع میتوانیم سایز عکس و بقیه صفت های اون تگ img رو تعیین کنیم.

<?php echo get_the_post_thumbnail( $post_id, $size, $attr ); ?>
  • $post_id  : آیدی پست مورد نظر. اگر خالی باشد پست جاری محصوب می شود.
  • $size : سایز عکس  است. یا می تواینم یک آرایه بدیم مانند( array(32,32 یا از کلمات کلیدی استفاده کنیم مانند (thumbnail, medium, large or full)
  • $attr : صفات تگ img است مانند title , alt , …

مثال :

<?php $pages = get_pages( array( 'child_of' => 1 ) ); ?> 
<ul>
	<?php foreach ( $pages as $page ) : ?>
		<li>
			<?php echo get_the_post_thumbnail( $page->ID, 'thumbnail' ); ?>
			<h1><?php echo apply_filters( 'the_title', $page->post_title, $page->ID ); ?></h1>
			<?php echo apply_filters( 'the_content', $page->post_content ); ?>
		</li>
	<?php endforeach; ?>
</ul>

مثال : ما از طریق پنل وردپرس میتونیم تنظیم کنیم که سایزهای پیشفرض عکس ها در وردپرس چقدر باشن.در این مثال در این تابع برای سایز عکس ها از همان کلمات کلیدی استفاده می کنیم :

// without parameter -> Post Thumbnail (as set by theme using set_post_thumbnail_size())
get_the_post_thumbnail( $post_id );                   

get_the_post_thumbnail( $post_id, 'thumbnail' );      // Thumbnail (Note: different to Post Thumbnail)
get_the_post_thumbnail( $post_id, 'medium' );         // Medium resolution
get_the_post_thumbnail( $post_id, 'large' );          // Large resolution
get_the_post_thumbnail( $post_id, 'full' );           // Original resolution

get_the_post_thumbnail( $post_id, array( 100, 100) ); // Other resolutions

همان طور می توانیم با استفاده از تابع add_image_size سایز جدید تعریف کنیم که در ادامه بهش می پردازیم.

 

 

۲۱ – تابع add_image_size

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

 <?php add_image_size( $name, $width, $height, $crop ); ?>

 

  •  $name : نام سایز جدید
  • $width : طول سایز عکس جدید
  • $height : عرض سایز عکس جدید
  • مقدار true یعنی عکس مورد نظر crop بشود و مقدار false یعنی عکس مورد نظر crop نشود و همچنین یک آرایه هم میگیره که میگه عکس مورد نظر از کجا crop بشود.(مقدار پیشفرض false است)

برای نام گذاری سایز جدید از کلمات (thumb, thumbnail, medium, large, post-thumbnail ) نمیتوانید استفاده کنید چون این کلمات و سایزها قبلا رزرو شده اند.

توجه کنید که سایزهای “

thumb

” و “

thumbnail

” دقیقا یکی هستند

مثال : این کد وقتی در فایل function.php نوشته شود بعد از ساخت تنظیمات تم , سایز جدید عکس ها نیز تعریف می شوند.

add_action( 'after_setup_theme', 'baw_theme_setup' );
function baw_theme_setup() {
  add_image_size( 'category-thumb', 300 ); // 300 pixels wide (and unlimited height)
  add_image_size( 'homepage-thumb', 220, 180, true ); // (cropped)
}

مثال : تعریف سایز جدید بدون crop و با resize

add_image_size( 'custom-size', 220, 180 ); // 220 pixels wide by 180 pixels tall, soft proportional crop mode

مثال : تعریف سایز جدید با crop

add_image_size( 'custom-size', 220, 180, true ); // 220 pixels wide by 180 pixels tall, hard crop mode

مثال : تعریف سایز جدید با crop و تعیین محل crop در عکس

add_image_size( 'custom-size', 220, 220, array( 'left', 'top' ) ); // Hard crop left top

حالا وقتی در جایی از تم خود خاستید که عکس پست مورد نظر رو نمایش بدین میتونید سایز جدیدی که خودتون درست کردین رو به جای your-custom-size  بنویسید.

<?php 
if ( has_post_thumbnail() ) { 
	the_post_thumbnail( 'your-custom-size' ); 
}
?>

 

 ۲۲- تابع set_post_thumbnail_size

این تابع مقدار اندازه پیش فرض عکس بند انگشتی (thumbnail) پست هارو عوض میکنه.

 <?php set_post_thumbnail_size( $width, $height, $crop ); ?>

 

  •  $width : طول تصویر
  • $height : عرض تصویر
  • آیا crop شود یا نه (true یا false) دقیقا مانند تابع add_image_size است.

مثال : این کد را در فایل function.php بنویسید.

add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 150, 150 );

این تابع سایز عکسای  پست هایی رو که قبلا گذاشتید عوض نمیکنه و روی عکس ها و پست هایی که از این به بعد آپلود میشن تاثیر گذار است. برای تغییر سایز عکس پست های قبلی باید از پلاگین Regenerate Thumbnails  استفاده نمایید.

مثال : تعریف سایز پیشفرض با حال resize

set_post_thumbnail_size( 50, 50 ); // 50 pixels wide by 50 pixels tall, resize mode

مثال : تعریف سایز پیشفرض عکس بند انگشتی با حال crop

set_post_thumbnail_size( 50, 50, true ); // 50 pixels wide by 50 pixels tall, crop mode

مثال : تعریف سایز پیشفرض عکس بند انگشتی با حالت crop  و تعیین محل crop در عکس

set_post_thumbnail_size( 50, 50, array( 'top', 'left')  ); // 50 pixels wide by 50 pixels tall, crop from the top left corner

یا

set_post_thumbnail_size( 50, 50, array( 'center', 'center')  ); // 50 pixels wide by 50 pixels tall, crop from the center

 

۲۳ – تابع has_post_thumbnail

این تابع چک می کند آیا پست مورد نظر thumbnail دارد یا خیر. اگر داشته باشد true برمیگرداند و اگر نداشته باشد false برمیگرداند.

<?php has_post_thumbnail( $post_id ); ?>
  •  $post_id : آیدی پست مورد نظر است و اگر وارد نشود پست جاری را مد نظر قرار میدهد.

مثال : این کد چک می کند اگر پست مورد نظر thumbnail داشت که آن را نمایش می دهد در غیر این صورت یک عکس پیشفرض را نمایش میدهد.

<?php
// Must be inside a loop.

if ( has_post_thumbnail() ) {
	the_post_thumbnail();
}
else {
	echo '<img src="' . get_bloginfo( 'stylesheet_directory' ) . '/images/thumbnail-default.jpg" />';
}
?>

 

۲۴ – تابع the_post_thumbnail

این تابع تصویر thumbnail پست جاری رو نشان می دهد.

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

<?php the_post_thumbnail( $size, $attr ); ?>

 

  •  $size : سایز عکس که در بالا بحث شده است
  • صفات تگ Img که چاپ می شود.
$default_attr = array(
	'src'   => $src,
	'class' => "attachment-$size",
	'alt'   => trim( strip_tags( $wp_postmeta->_wp_attachment_image_alt ) ),
);

مثال :

<?php 
if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
	the_post_thumbnail();
} 
?>
<?php the_content(); ?>

 توجه داشته باشین وقتی در خروجی تگ img به همراه thumbnail پست مورد نظر چاپ می شود. اون تگ img بسته به سایزی که تعیین کردیم کلاس هایی رو به صورت پیشفرض میگیرد مانند :

img.wp-post-image
img.attachment-thumbnail
img.attachment-medium
img.attachment-large
img.attachment-full

 

که می توانید کلاس های جدیدی هم خودتون اضافه کنید :

<?php the_post_thumbnail( 'thumbnail', array( 'class' => 'alignleft' ) ); ?>

 

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

نظر یادتون نرده smile

 

 

 

اینستاگرام علی حسین شهابی لینکدین علی حسین شهابی

1 نظر

( 1395/9/14 )سعید رضایی

بابا خیلی حلالت :P

ارسال نظر جدید

 
Not signed in

کلیه حقوق مادی و معنوی , متعلق به سایت (Alihossein.ir)می باشد ,انتشار مطالب بدون ذکر منبع از نظر اخلاقی و شرعی صحیح نمی باشد.