• друзья ! подскажите, как в comments_popup_link отредактировать тайтл к ссылке ?

Просмотр 15 ответов — с 1 по 15 (всего 19)
  • Автор Kanjo

    (@kanjo)

    возможно я как-то не правильно написал, поэтому и ответов нет. поясню, есть строчка в файле index.php, которая выводит количество комментариев к посту. пример:

    <?php comments_popup_link('0 комментариев. &raquo;', '1 комментарий. &raquo;', '% комментария. &raquo;'); ?>

    при наведение на ссылку я вижу следующий тайтл:

    Comment on название поста

    хочу переименовать Comment on, чтобы было по русски.

    как я понимаю это дефолтовый текст, именно мне его и надо заменить, только заменить не в файлах самого движка, а в файле темы.

    help !!!

    Автор Kanjo

    (@kanjo)

    Есть кто живой ?

    Автор Kanjo

    (@kanjo)

    Нет, т.к. проект не использует языкового пакета в целях экономии ресурсов сервера

    Нет, т.к. проект не использует языкового пакета в целях экономии ресурсов сервера

    Сняли колеса что бы уменьшить сопротивление воздуха, и хотите ехать.
    Чудны дела твои, вебмастер. (с)

    Автор Kanjo

    (@kanjo)

    согласен, немного бредовое объяснение, но как есть, так и сказал. все переведено, все работает корректно, за несколько месяцев использования нашел только этот недочет, который ой как хочется подправить.

    к сожалению самостоятельно информации об этом переводе не нашел (

    Можно продублировать эту функцию в файл 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/)

    Возможно, что не самое лучшее решение, но рабочее.

    Автор Kanjo

    (@kanjo)

    спасибо большое, вроде бы более менее разобрался. но и появились новые вопросы )))

    если я правильно понял, то мне надо взять этот код:

    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 (обратные ссылки, которые также могут появляться как комментарии) к записи

    Автор Kanjo

    (@kanjo)

    хмммм. тогда такой вопрос, пинги и трекбеки у меня запрещены и я их вырезал из шаблона. соответственно данная проверка мне не нужна и логичнее от нее отказаться. а вот как правильно это вырезать из функции ?

    пока у меня получился такой код

    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 без изменений. Вставьте ее вызов в шаблон. Проверьте. Если работает, то пробуйте другие правки.

    Автор Kanjo

    (@kanjo)

    уже протестировал мой резанный код, который был в предыдущем сообщении, все работает, багов не выявлено )

    осталось избавиться от pings_open

    Автор Kanjo

    (@kanjo)

    попытался самостоятельно вырезать из кода

    if ( 0 == $number && !comments_open() && !pings_open() ) {
    		echo '<span' . ((!empty($css_class)) ? ' class="' . esc_attr( $css_class ) . '"' : '') . '>' . $none . '</span>';
    		return;
    	}

    либо ссылка на комментарии пропадает, либо открывается белая страница. подскажите пожалуйста, как это правильно сделать ?

    Не должно быть проблем. Наверное, что-то в других правках сделали коряво.
    Вообще, изначальный вопрос «друзья ! подскажите, как в comments_popup_link отредактировать тайтл к ссылке ?». Этот вопрос был решен. По правилам форума по другим вопросам нужно создавать новую тему.

    Автор Kanjo

    (@kanjo)

    убирал 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. большое спасибо за помощь. сам бы я точно не справился.

Просмотр 15 ответов — с 1 по 15 (всего 19)
  • Тема «Вопрос по comments_popup_link» закрыта для новых ответов.