Вопрос по comments_popup_link
-
друзья ! подскажите, как в comments_popup_link отредактировать тайтл к ссылке ?
-
возможно я как-то не правильно написал, поэтому и ответов нет. поясню, есть строчка в файле index.php, которая выводит количество комментариев к посту. пример:
<?php comments_popup_link('0 комментариев. »', '1 комментарий. »', '% комментария. »'); ?>
при наведение на ссылку я вижу следующий тайтл:
Comment on название поста
хочу переименовать Comment on, чтобы было по русски.
как я понимаю это дефолтовый текст, именно мне его и надо заменить, только заменить не в файлах самого движка, а в файле темы.
help !!!
Есть кто живой ?
А русский язык установили как описано по ссылке ниже?
Нет, т.к. проект не использует языкового пакета в целях экономии ресурсов сервера
Нет, т.к. проект не использует языкового пакета в целях экономии ресурсов сервера
Сняли колеса что бы уменьшить сопротивление воздуха, и хотите ехать.
Чудны дела твои, вебмастер. (с)согласен, немного бредовое объяснение, но как есть, так и сказал. все переведено, все работает корректно, за несколько месяцев использования нашел только этот недочет, который ой как хочется подправить.
к сожалению самостоятельно информации об этом переводе не нашел (
Можно продублировать эту функцию в файл functions.php в шаблоне.
Там назовите ее по другому (например: kanjo_comments_popup_link) и соотв. вызывайте свою функцию в файле index.phpКод для comments_popup_link можете скопировать из
wp-includes/comment-template.php
там нужно будет исправить строчку
echo ‘ title=»‘ . esc_attr( sprintf( __(‘Comment on %s’), $title ) ) . ‘»>’;(см. также http://wpseek.com/comments_popup_link/)
Возможно, что не самое лучшее решение, но рабочее.
спасибо большое, вроде бы более менее разобрался. но и появились новые вопросы )))
если я правильно понял, то мне надо взять этот код:
function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) { global $wpcommentspopupfile, $wpcommentsjavascript; $id = get_the_ID(); if ( false === $zero ) $zero = __( 'No Comments' ); if ( false === $one ) $one = __( '1 Comment' ); if ( false === $more ) $more = __( '% Comments' ); if ( false === $none ) $none = __( 'Comments Off' ); $number = get_comments_number( $id ); if ( 0 == $number && !comments_open() && !pings_open() ) { echo '<span' . ((!empty($css_class)) ? ' class="' . esc_attr( $css_class ) . '"' : '') . '>' . $none . '</span>'; return; } if ( post_password_required() ) { echo __('Enter your password to view comments.'); return; } echo '<a href="'; if ( $wpcommentsjavascript ) { if ( empty( $wpcommentspopupfile ) ) $home = home_url(); else $home = get_option('siteurl'); echo $home . '/' . $wpcommentspopupfile . '?comments_popup=' . $id; echo '" onclick="wpopen(this.href); return false"'; } else { // if comments_popup_script() is not in the template, display simple comment link if ( 0 == $number ) echo get_permalink() . '#respond'; else comments_link(); echo '"'; } if ( !empty( $css_class ) ) { echo ' class="'.$css_class.'" '; } $title = the_title_attribute( array('echo' => 0 ) ); echo apply_filters( 'comments_popup_link_attributes', '' ); echo ' title="' . esc_attr( sprintf( __('Comment on %s'), $title ) ) . '">'; comments_number( $zero, $one, $more ); echo '</a>'; }
перевести надо в этой строчке
echo ' title="' . esc_attr( sprintf( __('Comment on %s'), $title ) ) . '">';
сразу же в функции я могу перевести строчки
if ( false === $zero ) $zero = __( 'No Comments' ); if ( false === $one ) $one = __( '1 Comment' ); if ( false === $more ) $more = __( '% Comments' ); if ( false === $none ) $none = __( 'Comments Off' );
и вызвать свою функцию без доп параметров в виде
<?php kanjo_comments_popup_link (); ?>
т.к. комментарии никогда не закрываются паролем, можно вырезать из кода условие
if ( post_password_required() ) { echo __('Enter your password to view comments.'); return; }
правильно ли я разобрался ?
и за что отвечает параметр !pings_open() в строчке
if ( 0 == $number && !comments_open() && !pings_open() ) {
спасибо
Да, вроде все правильно.
pings_open проверяет разрешены ли trackbacks (обратные ссылки, которые также могут появляться как комментарии) к записихмммм. тогда такой вопрос, пинги и трекбеки у меня запрещены и я их вырезал из шаблона. соответственно данная проверка мне не нужна и логичнее от нее отказаться. а вот как правильно это вырезать из функции ?
пока у меня получился такой код
function kanjo_comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) { global $wpcommentspopupfile, $wpcommentsjavascript; $id = get_the_ID(); if ( false === $zero ) $zero = __( '0 комментариев' ); if ( false === $one ) $one = __( '1 комментарий' ); if ( false === $more ) $more = __( '% комментария' ); $number = get_comments_number( $id ); if ( 0 == $number && !comments_open() && !pings_open() ) { echo '<span' . ((!empty($css_class)) ? ' class="' . esc_attr( $css_class ) . '"' : '') . '>' . $none . '</span>'; return; } echo '<a href="'; if ( $wpcommentsjavascript ) { if ( empty( $wpcommentspopupfile ) ) $home = home_url(); else $home = get_option('siteurl'); echo $home . '/' . $wpcommentspopupfile . '?comments_popup=' . $id; echo '" onclick="wpopen(this.href); return false"'; } else { // if comments_popup_script() is not in the template, display simple comment link if ( 0 == $number ) echo get_permalink() . '#respond'; else comments_link(); echo '"'; } if ( !empty( $css_class ) ) { echo ' class="'.$css_class.'" '; } $title = the_title_attribute( array('echo' => 0 ) ); echo apply_filters( 'comments_popup_link_attributes', '' ); echo ' title="' . esc_attr( sprintf( __('Комментарии к %s'), $title ) ) . '">'; comments_number( $zero, $one, $more ); echo '</a>'; }
я отказался от закрытых комментариев, вырезав код ниже, потому как они всегда открыты
if ( false === $none ) $none = __( 'Comments Off' );
получается теперь надо убрать проверку трекбеков, и после этого можно из значения функции будет убрать $none, т.к. это значение не будет выводиться.
Для простоты: сначала сделайте функцию в functions.php без изменений. Вставьте ее вызов в шаблон. Проверьте. Если работает, то пробуйте другие правки.
уже протестировал мой резанный код, который был в предыдущем сообщении, все работает, багов не выявлено )
осталось избавиться от pings_open
попытался самостоятельно вырезать из кода
if ( 0 == $number && !comments_open() && !pings_open() ) { echo '<span' . ((!empty($css_class)) ? ' class="' . esc_attr( $css_class ) . '"' : '') . '>' . $none . '</span>'; return; }
либо ссылка на комментарии пропадает, либо открывается белая страница. подскажите пожалуйста, как это правильно сделать ?
Не должно быть проблем. Наверное, что-то в других правках сделали коряво.
Вообще, изначальный вопрос «друзья ! подскажите, как в comments_popup_link отредактировать тайтл к ссылке ?». Этот вопрос был решен. По правилам форума по другим вопросам нужно создавать новую тему.убирал echo, поэтому и пропадало.
прошу еще раз проверить мой финальный код на предмет корректности и закроем тему.
function kanjo_comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '' ) { global $wpcommentspopupfile, $wpcommentsjavascript; $id = get_the_ID(); if ( false === $zero ) $zero = __( '0 комментариев' ); if ( false === $one ) $one = __( '1 комментарий' ); if ( false === $more ) $more = __( '% комментария' ); $number = get_comments_number( $id ); echo '<a href="'; if ( $wpcommentsjavascript ) { if ( empty( $wpcommentspopupfile ) ) $home = home_url(); else $home = get_option('siteurl'); echo $home . '/' . $wpcommentspopupfile . '?comments_popup=' . $id; echo '" onclick="wpopen(this.href); return false"'; } else { // if comments_popup_script() is not in the template, display simple comment link if ( 0 == $number ) echo get_permalink() . '#respond'; else comments_link(); echo '"'; } if ( !empty( $css_class ) ) { echo ' class="'.$css_class.'" '; } $title = the_title_attribute( array('echo' => 0 ) ); echo apply_filters( 'comments_popup_link_attributes', '' ); echo ' title="' . esc_attr( sprintf( __('Комментарии к %s'), $title ) ) . '">'; comments_number( $zero, $one, $more ); echo '</a>'; }
p.s. большое спасибо за помощь. сам бы я точно не справился.
- Тема «Вопрос по comments_popup_link» закрыта для новых ответов.