Ответы в темах

Просмотр 15 ответов — с 61 по 75 (всего 116)
  • Юрий, возможно это решение, но я хочу оставить заголовки в h4 и так же хочу избавиться от 2-х проверок.

    если вставить пропущенное двоеточие перед фигурной открывающейся фигурной скобкой, то все работает, единственное слитают стили и вся форма загоняется в h4

    <h4 id="comments"><?php comments_number('Пока комментариев нет. Напишем?', 'Есть 1 комментарий', 'Есть % комментариев');?> <?php if ( have_comments() ) : { ?> к “<?php the_title(); ?>” <?php } ?></h4>

    как это можно победить ?

    спасибо.

    получается, что сейчас у меня 2 проверки, которые делают одно и то же ? но почему тогда, после удаления второй проверки — пропадают комментарии ?

    Автор Kanjo

    (@kanjo)

    разобрался, моя ошибка была. нечаянно удалил

    <?php if ( have_comments() ) : ?>

    вот только теперь немного не понимаю, что делает эта проверка и чем она отличается от той, которая добавляется в код вывода сообщения ?

    спасибо.

    Автор Kanjo

    (@kanjo)

    неа, что-то не так. комментарии полностью пропадают.

    Автор Kanjo

    (@kanjo)

    спасибо большое. все теперь выводится. поднял смежную тему ТУТ

    Автор Kanjo

    (@kanjo)

    2 недели прошло, нет ни одного ответа. прикрепляю код своего файла comments.php, возможно это поможет в решении моей проблемы

    <!-- You can start editing here. -->
    <div id="commentpost">
    
    <?php if ( have_comments() ) : ?>
    
    <?php if ( ! empty($comments_by_type['comment']) ) : ?>
    
    <h4 id="comments"><?php comments_number('нет комментариев.', 'Есть 1 комментарий.', 'Есть % комментария.');?> к “<?php the_title(); ?>”</h4>
    
    <div id="post-navigator-single">
    <div class="alignleft"><?php previous_comments_link() ?></div>
    <div class="alignright"><?php next_comments_link() ?></div>
    </div>
    
    	<ol class="commentlist">
        <?php wp_list_comments('type=comment&callback=user_comment'); ?>
    	</ol>
    
    <div id="post-navigator-single">
    <div class="alignleft"><?php previous_comments_link() ?></div>
    <div class="alignright"><?php next_comments_link() ?></div>
    </div>    
    
       <?php endif; ?>
    
     <?php else : // this is displayed if there are no comments so far ?>
    
     <?php if ('open' == $post->comment_status) : ?>
     <!-- If comments are open, but there are no comments. -->
    
    <?php else : // comments are closed ?>
    <!-- If comments are closed. -->
    <h2 id="post-header">Комментарии закрыты.</h2>
    
    <?php endif; ?>
    <?php endif; ?>
    
    <?php if ('open' == $post->comment_status) : ?>
    
    <div id="respond">
    
    <h4><?php comment_form_title( 'Оставить комментарий', 'Написать ответ %s' ); ?></h4>
    
    <div class="cancel-comment-reply">
    <?php cancel_comment_reply_link('Отмена'); ?>
    </div>
    
    <form action="/wp-comments-post.php" method="post" id="cf">
    
    <?php if ( $user_ID ) : ?>
    
    <p>Вы вошли как: <a href="/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Выйти из аккаунта">Выход &raquo;</a></p>
    
    <?php else : ?>
    
    <p>
    <label for="author"><small>Ваше имя <?php if ($req) echo "(обязательно)"; ?></small></label><br />
    <input type="text" class="tf" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
    </p>
    
    <p>
    <label for="email"><small>Ваша почта <?php if ($req) echo "(обязательно)"; ?></small></label><br />
    <input type="email" class="tf" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
    </p>
    
    <?php endif; ?>
    
    <textarea name="comment" id="comment" cols="50%" rows="8" class="af" tabindex="3"></textarea>
    
    <div>
    <input name="submit" type="submit" class="st" value="Отправить" id="submit" alt="Отправить свой комментарий" tabindex="4" />
    </div>
    
    <?php comment_id_fields(); ?>
    
    <?php do_action('comment_form', $post->ID); ?>
    
    </form>
    
    </div>
    
    <?php endif; // if you delete this the sky will fall on your head ?>
    </div>

    Автор Kanjo

    (@kanjo)

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

    Автор Kanjo

    (@kanjo)

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

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

    Автор Kanjo

    (@kanjo)

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

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

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

    Автор Kanjo

    (@kanjo)

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

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

    Автор 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, т.к. это значение не будет выводиться.

    Автор 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() ) {

    спасибо

    Автор Kanjo

    (@kanjo)

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

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

Просмотр 15 ответов — с 61 по 75 (всего 116)