رفتن به مطلب

کاراکتر عجیب FFFD در ویجت آخرین کامنت ها


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

سلام

من از تم iTheme2 استفاده می کنم که یک ویجت خاص برای آخرین دیدگاه ها داره.

نمونه عملی اون رو در آدرس gistech.ir میتونید ببینید. مشکل اینه که برای بعض از کامنت ها یه کاراکتر عجیب هم اضافه میشه که اون رو در انتهای کامنت می بینید. خیلی سعی کردم ببینم مشکل چیه. اما چیزی متوجه نشدم. ظاهرا این کاراکتر یونیکد هست که برای کاراکترهای ناشناخته به کار می ره. اما چرا اینجا ظاهر میشه نمیدونم. اصل کد ویجت رو هم گذاشتم ببینم شما چیزی متوجه می شید.

پیشاپیش ممنون



class Themify_Recent_Comments extends WP_Widget {

///////////////////////////////////////////
// Recent Comments
///////////////////////////////////////////
function Themify_Recent_Comments() {
/* Widget settings. */
$widget_ops = array( 'classname' => 'recent-comments', 'description' => 'فهرستی از آخرین دیدگاه های همه نوشته ها' );

/* Widget control settings. */
$control_ops = array( 'id_base' => 'themify-recent-comments' );

/* Create the widget. */
$this->WP_Widget( 'themify-recent-comments', 'wp98 - آخرین دیدگاه ها', $widget_ops, $control_ops );
}

///////////////////////////////////////////
// Widget
///////////////////////////////////////////
function widget( $args, $instance ) {
extract( $args );

/* User-selected settings. */
$title = apply_filters('widget_title', $instance['title'] );
$show_count = $instance['show_count'];
$show_avatar = isset( $instance['show_avatar'] ) ? $instance['show_avatar'] : false;
$avatar_size = $instance['avatar_size'];
$excerpt_length = $instance['excerpt_length'];

/* Before widget (defined by themes). */
echo $before_widget;

/* Title of widget (before and after defined by themes). */
if ( $title )
echo $before_title . $title . $after_title;

$comments = get_comments(array(
'number' => $show_count,
'status' => 'approve',
'type' => 'comment'
));

echo '<ul class="recent-comments-list">';

foreach($comments as $comment) :

$comm_title = get_the_title($comment->comment_post_ID);
$comm_link = get_comment_link($comment->comment_ID);
?>

<li>
<?php
if ( $show_avatar ) {
echo '<a href="' . $comm_link . '">' . get_avatar($comment,$size=$avatar_size) . '</a>';
}
?>
<a href="<?php echo($comm_link)?>"><strong class="comment-author"><?php echo($comment->comment_author)?></strong>:</a> <?php echo substr(get_comment_excerpt( $comment->comment_ID ), 0, $excerpt_length); ?>…
</li>

<?php
endforeach;

echo '</ul>';


/* After widget (defined by themes). */
echo $after_widget;
}

///////////////////////////////////////////
// Update
///////////////////////////////////////////
function update( $new_instance, $old_instance ) {
$instance = $old_instance;

/* Strip tags (if needed) and update the widget settings. */
$instance['title'] = strip_tags( $new_instance['title'] );
$instance['show_count'] = $new_instance['show_count'];
$instance['show_avatar'] = $new_instance['show_avatar'];
$instance['avatar_size'] = $new_instance['avatar_size'];
$instance['excerpt_length'] = $new_instance['excerpt_length'];

return $instance;
}

///////////////////////////////////////////
// Form
///////////////////////////////////////////
function form( $instance ) {

/* Set up some default widget settings. */
$defaults = array( 'title' => 'آخرین دیدگاه ها', 'show_count' => 3, 'show_avatar' => false, 'avatar_size' => 32, 'excerpt_length' => 60 );
$instance = wp_parse_args( (array) $instance, $defaults ); ?>

<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>">عنوان:</label><br />
<input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" width="100%" />
</p>

<p>
<label for="<?php echo $this->get_field_id( 'show_count' ); ?>">نمایش:</label>
<select id="<?php echo $this->get_field_id( 'show_count' ); ?>" name="<?php echo $this->get_field_name( 'show_count' ); ?>">
<?php
for ( $i = 1; $i < 11; $i++ ) {
echo '<option' . ( $i == $instance['show_count'] ? ' selected="selected"' : '' ) . '>' . $i . '</option>';
}
?>
</select>
</p>

<p>
<input class="checkbox" type="checkbox" <?php checked( $instance['show_avatar'], 'on' ); ?> id="<?php echo $this->get_field_id( 'show_avatar' ); ?>" name="<?php echo $this->get_field_name( 'show_avatar' ); ?>" />
<label for="<?php echo $this->get_field_id( 'avatar' ); ?>">نمایش اواتار</label>
</p>

<p>
<label for="<?php echo $this->get_field_id( 'avatar_size' ); ?>">اندازه اواتار:</label>
<input id="<?php echo $this->get_field_id( 'avatar_size' ); ?>" name="<?php echo $this->get_field_name( 'avatar_size' ); ?>" value="<?php echo $instance['avatar_size']; ?>" size="4" /> px
</p>

<p>
<label for="<?php echo $this->get_field_id( 'excerpt_length' ); ?>">چکیده دیدگاه</label>
<input id="<?php echo $this->get_field_id( 'excerpt_length' ); ?>" name="<?php echo $this->get_field_name( 'excerpt_length' ); ?>" value="<?php echo $instance['excerpt_length']; ?>" size="4" /> حرف
</p>

<?php
}
}

لینک به ارسال

افزونه رو غیرفعال کنید ببینید بازهم اون کاراکترها اضافه میشن؟

لینک به ارسال

غیرفعال کردم اما تغییری نکرد.

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

لینک به ارسال

توی این یکماه چه تغییراتی داشتید؟

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

لینک به ارسال

substr رو توی کدهایی که بالاتر دادید رو با تابع mb_substr عوض کنید

لینک به ارسال

substr رو توی کدهایی که بالاتر دادید رو با تابع mb_substr عوض کنید

عوض شد و حل شد مرتضی جان.

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

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

بازم ممنون

لینک به ارسال

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

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

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

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

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

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

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

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

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