تابع is_author در وردپرس
تابع is_author() یکی از conditional tags وردپرس است که برای تشخیص صفحات آرشیو نویسنده (Author Archive) بهکار میرود. با استفاده از این تابع میتوانید رفتار قالب یا فانکشنها را زمانی که کاربر در صفحهٔ نویسنده قرار دارد تغییر دهید؛ مثلاً نمایش باکس نویسنده، بارگذاری استایل اختصاصی یا تغییر کوئری نتایج.
موقعیت استفاده و مفهوم پایهای
- is_author() زمانی true بازمیگرداند که صفحهٔ فعلی یک آرشیو نویسنده باشد (مثلاً example.com/author/username).
- این تابع برای صفحات single post کاربرد ندارد و اگر قصد دارید بفهمید پست خاصی متعلق به چه نویسندهای است باید از توابع دیگری استفاده کنید.
- پارامتر اختیاری ورودی میپذیرد تا بررسی را نسبت به یک نویسندهٔ مشخص انجام دهد (ID، nicename یا آرایه).
امضای تابع و پارامترها
| تابع | پارامتر | نوع | توضیح |
|---|---|---|---|
| is_author() | mixed $author | ID | string | array | null | اگر دادهای داده شود، بررسی میشود که آیا آرشیو همان نویسنده است یا خیر. |
مثالهای پایه
if ( is_author() ) {
// روی صفحه آرشیو نویسنده هستیم
echo 'این آرشیو نویسنده است.';
}
if ( is_author( 5 ) ) {
// آرشیو نویسنده با ID برابر 5
}
if ( is_author( 'reza' ) ) {
// آرشیو نویسنده با nicename برابر reza
}
if ( is_author( array( 'reza', 7 ) ) ) {
// آرشیو نویسنده با nicename reza یا با ID برابر 7
}توضیح: کد بالا موارد مختلف استفاده از پارامتر تابع را نشان میدهد. زمانی که پارامتر وجود نداشته باشد، فقط بررسی میکند که آیا صفحهٔ فعلی یک آرشیو نویسنده است یا خیر. در صورت ارسال ID یا nicename، محدودتر عمل میکند.
مثال عملی در قالب (author.php یا header.php)
add_action( 'wp_enqueue_scripts', 'enqueue_author_styles' );
function enqueue_author_styles() {
if ( is_author() ) {
wp_enqueue_style( 'author-archive', get_template_directory_uri() . '/css/author.css' );
}
}توضیح: این کد استایل مخصوص صفحات آرشیو نویسنده را فقط در زمانی که is_author() true است بارگذاری میکند تا از لود غیرضروری جلوگیری شود.
اشتباهات رایج و نحوهٔ صحیح بررسی نویسندهٔ فعلی در Single Post
بسیاری از توسعهدهندگان فکر میکنند میتوانند از is_author() در صفحهٔ single برای بررسی نویسندهٔ پست استفاده کنند؛ اما این اشتباه است. برای بررسی نویسندهٔ یک پست از توابع زیر استفاده کنید:
$author_id = get_post_field( 'post_author', get_the_ID() );
if ( $author_id == 5 ) {
// نویسندهٔ پست ID برابر 5 دارد
}توضیح: این کد شناسهٔ نویسندهٔ پست جاری را میخواند و با مقدار مشخص مقایسه میکند. is_author() برای آرشیوها کاربرد دارد نه صفحات single.
پیشرفته: تغییر کوئری آرشیو نویسنده با pre_get_posts
گاهی میخواهید تعداد پستها یا ترتیب نتایج در صفحهٔ آرشیو نویسنده را تغییر دهید. از هوک pre_get_posts استفاده کنید:
function modify_author_archive_query( $query ) {
if ( $query->is_main_query() && ! is_admin() && $query->is_author() ) {
$query->set( 'posts_per_page', 12 );
$query->set( 'orderby', 'date' );
$query->set( 'order', 'DESC' );
}
}
add_action( 'pre_get_posts', 'modify_author_archive_query' );توضیح: در این کد ابتدا مطمئن میشویم که داریم کوئری اصلی فرانتاند را تغییر میدهیم و سپس برای آرشیو نویسنده تنظیمات pagination و ترتیب را اعمال میکنیم. این روش بهینهتر و استاندارد است.
استفاده ترکیبی با سایر conditional tags
- is_author() + is_paged(): تشخیص اینکه کاربر در صفحهٔ دوم یا بعدی آرشیو نویسنده است.
- is_author() + is_post_type_archive(): مفید در سایتهایی با چند نوع پست برای تفکیک آرشیوها.
- is_user_logged_in() + is_author(): نمایش اطلاعات اضافی به نویسندهٔ لاگینشده.
مثال: نمایش دکمه ویرایش برای نویسندهٔ خودِ صفحه
if ( is_author() ) {
$queried_user = get_queried_object();
if ( is_user_logged_in() && get_current_user_id() === (int) $queried_user->ID ) {
echo 'ویرایش پروفایل';
}
}توضیح: get_queried_object() اطلاعات نویسندهٔ آرشیو را برمیگرداند. سپس با مقایسه شناسه کاربر جاری و شناسهٔ نویسنده، لینک ویرایش را فقط برای خود نویسنده نمایش میدهیم.
نکات امنیتی و بهینهسازی
- همیشه مقادیر خروجی را با توابع esc_ مناسب فرمت کنید (مثلاً esc_url، esc_html).
- برای جلوگیری از بارگذاری استایلها و اسکریپتهای غیرضروری، از is_author() در enqueue استفاده کنید.
- در pre_get_posts حتماً is_main_query() و !is_admin() را بررسی کنید تا کوئریهای backend یا فرعی را تغییر ندهید.
جمعبندی و توصیههای حرفهای
تابع is_author() ابزار ساده و قدرتمندی برای مدیریت رفتار قالب در صفحات آرشیو نویسنده است. اما مهم است تفاوت آن با بررسی نویسندهٔ پست را بدانید و از توابع مناسب در هر موقعیت استفاده کنید. برای عملکرد بهینه، کوئریها و enqueueها را شرطی کنید و همیشه خروجیها را امن کنید.
در صورت نیاز میتوانید نمونههای بیشتری مثل نمایش شبکهٔ اجتماعی نویسنده در author.php یا ساخت pagination سفارشی برای آرشیو نویسنده را اجرا کنید؛ همهٔ اینها با درک دقیق از is_author() سادهتر و موثرتر خواهند بود.
آیا این مطلب برای شما مفید بود ؟




