Проблема с полем пароля в плагине Spam Free WordPress

Здесь я напишу вам, как у меня получилось решить проблему отображения поля пароля в форме комментариев в плагине Spam Free WordPress (версия 1.5.1), на примере конкретной темы (шаблона).

Скачать исходники для статьи можно ниже

Небольшое вступление:
Недавно вышла новая версия плагина Spam Free WordPress 1.9, в которой нет поля пароля для формы комментариев, поэтому кто обновился и не может найти в интернете старую версию плагина, выкладываю ее:

Скачать плагин Spam Free WordPress 1.5.1

Сейчас во многих бесплатных темах (шаблонах), в том числе премиум темах используется плагин Spam Free WordPress. Однако установив одну из таких премиум тем заметил, что в форме комментария поле пароля и поле для ввода этого пароля не видно.

Пришлось зайти на http://wordpress.org – здесь находится очень много плагинов, к тому же есть инструкция по их установке, только все на английском языке, однако, в настоящее время это не является большой проблемой, так как например, я пользуюсь встроенным переводчиков в Яндекс баре или же использую Переводчик от Google (http://translate.google.com).

Так вот вводим в строку поиска наш плагин Spam Free WordPress и в результатах поиска жмем на первую ссылку http://wordpress.org/extend/plugins/spam-free-wordpress/

Открываем закладку Installation (Установка) и читаем следующее:

WordPress 3.0 и Выше

  1. Загрузить в /wp-content/plugins directory
  2. Активировать
  3. Если функция comment_form()  уже есть в файле comments.php, делать ничего не нужно. В противном случае перейдите к шагу 4.
  4. Сохранить резервную копию comments.php
  5. Перейдите в Внешний вид -> Редактор. Редактировать comments.php (то есть в панеле управления сайтом в левом меню выбираем “Внешний вид”, в нем выбираем “Редактор”, далее справа в списке ищем файл comments.php и выбираем его).
  6. Заменить <form> и </form> теги, и весь код между <form> и </form> -тегов, с помощью следующей строки кода: <?php comment_form(); ?> - вот в этом пункте я и нашел разгадку своей проблемы!
  7. Нажмите кнопку “Обновить Файл” , чтобы сохранить изменения.
  8. Если файл испортится, использовать резервную comments.php код, чтобы все восстановить.

Неправильно: <form> <?php comment_form(); ?> </form>

Правильно: <?php comment_form(); ?>

Рассмотрим на примере моей темы решение данной проблемы.

Я открыл Редактором WordPress свой comments.php (в левом меню выбираем “Внешний вид”, в нем выбираем “Редактор”, далее справа в списке ищем файл comments.php и выбираем его) и увидел следующее:

<?php // Do not delete these lines
	if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
		die ('Please do not load this page directly. Thanks!');

        if (!empty($post->post_password)) { // if there's a password
            if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
				?>

				<p class="nocomments">This post is password protected. Enter the password to view comments.<p>

				<?php
				return;
            }
        }

		/* This variable is for alternating comment background */
		$oddcomment = 'alt';
?>

<!-- You can start editing here. -->

<?php if ($comments) : ?>
	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3> 

	<ol class="commentlist">

	<?php foreach ($comments as $comment) : ?>

		<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">
			<cite><?php comment_author_link() ?></cite> Says:
			<?php if ($comment->comment_approved == '0') : ?>
			<em>Your comment is awaiting moderation.</em>
			<?php endif; ?>
			<br />

			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('e','',''); ?></small>

			<?php comment_text() ?>

		</li>

	<?php /* Changes every other comment to a different class */
		if ('alt' == $oddcomment) $oddcomment = '';
		else $oddcomment = 'alt';
	?>

	<?php endforeach; /* end for each comment */ ?>

	</ol>

 <?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. -->
		<p class="nocomments">Comments are closed.</p>

	<?php endif; ?>
<?php endif; ?>


<?php if ('open' == $post->comment_status) : ?>

<h3 id="respond">Leave a Reply</h3>

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">logged in</a> to post a comment.</p>
<?php else : ?>

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

<?php if ( $user_ID ) : ?>

<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>

<?php else : ?>

<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
<label for="author"><strong>Name</strong> <?php if ($req) echo "(required)"; ?></label></p>

<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
<label for="email"><strong>Mail</strong> (will not be published) <?php if ($req) echo "(required)"; ?></label></p>

<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><strong>Website</strong></label></p>

<?php endif; ?>

<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>

<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>
<?php do_action('comment_form', $post->ID); ?>

</form>

<?php endif; // If registration required and not logged in ?>

<?php endif; // if you delete this the sky will fall on your head ?>

Я решил с помощью своего браузера найти на данной страничке тег form (в Firefox, выбираем пункт меню Правка – Найти и вводим в поле поиска слово form). И к моему счастью он его нашел!

Далее я взял все, что было между тегами form

(код с тегом form начинался у меня так:

в коде строка 71

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

а заканчивался:

в коде строка 97),

</form>

и просто удалил, а вместо всего этого поставил <?php comment_form(); ?> и получил следующий код:

<?php // Do not delete these lines
	if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
		die ('Please do not load this page directly. Thanks!');

        if (!empty($post->post_password)) { // if there's a password
            if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
				?>

				<p class="nocomments">This post is password protected. Enter the password to view comments.<p>

				<?php
				return;
            }
        }

		/* This variable is for alternating comment background */
		$oddcomment = 'alt';
?>

<!-- You can start editing here. -->

<?php if ($comments) : ?>
	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3> 

	<ol class="commentlist">

	<?php foreach ($comments as $comment) : ?>

		<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">
			<cite><?php comment_author_link() ?></cite> Says:
			<?php if ($comment->comment_approved == '0') : ?>
			<em>Your comment is awaiting moderation.</em>
			<?php endif; ?>
			<br />

			<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?></a> <?php edit_comment_link('e','',''); ?></small>

			<?php comment_text() ?>

		</li>

	<?php /* Changes every other comment to a different class */
		if ('alt' == $oddcomment) $oddcomment = '';
		else $oddcomment = 'alt';
	?>

	<?php endforeach; /* end for each comment */ ?>

	</ol>

 <?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. -->
		<p class="nocomments">Comments are closed.</p>

	<?php endif; ?>
<?php endif; ?>


<?php if ('open' == $post->comment_status) : ?>

<h3 id="respond">Leave a Reply</h3>

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">logged in</a> to post a comment.</p>
<?php else : ?>

<?php comment_form(); ?>

<?php endif; // If registration required and not logged in ?>

<?php endif; // if you delete this the sky will fall on your head ?>

Вот и все!

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

Все заработало!

 

 

PS:  Заголовки полей появляются на английском языке. Далее расскажу как их поменять на русский.

Нам необходимо поменять следующие английские слова на русские:

Copy this password:

Type or paste password here:

Для этого входим в панель управления нашим сайтом, в левом меню выбираем вкладку “Плагины”, далее нажимаем на подпункт “Редактор” и в правом верхнем углу находим надпись:

Выбираем наш плагин Spam Free WordPress, после справа в окошке “Файлы плагина” у вас появилось 2 файла:
1.  spam-free-wordpress/tl-spam-free-wordpress.php
и
2. spam-free-wordpress/index.php
Выбираем первый из них. Вот в этом файле нам и нужно найти наши английские слова, которые мы хотим поменять и напечатать вместо них русские.
В своем браузере (я пользуюсь Mozilla Firefox) нажимаем в меню на закладку “Правка” и выбираем подпункт “Найти”, внизу браузера у вас появляется строчка с полем поиска, туда вводим “Copy this password” и жмем найти или следующее.
Ваш браузер находит данную строчку, напишу кусок кода, где мой браузер нашел данные слова:
// Reader must enter this password manually on the comment form
		echo "<p>Copy this password *
		<input type='text' value='".$sfw_comment_form_password_var."' onclick='this.select()' size='".$sfw_pw_field_size."' /></p>";
		echo "<p>Type or paste password here: *
		<input type='text' name='passthis' id='passthis' value='".$comment_passthis."' size='".$sfw_pw_field_size."' tabindex='".$sfw_tab_index."' /></p>";

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

Вот теперь просто удаляем “Copy this password” и вставляем например: “Скопируйте данный пароль”.

А также удаляем “Type or paste password here:” и вставляем например: ” Вставьте скопированный выше пароль”.

Теперь нам нужно сохранить изменения, для этого идем в самый низ странички и видим кнопку “Обновить файл” нажимаем на нее и смотрим результат.

Все готово!!!

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Проблема с полем пароля в плагине Spam Free WordPress: 5 комментариев

  1. Ольга

    Я всё сделала как вы советовали, но к сожалению не нашла тех строчек на английском языке. Все .php перекопала но их нет. Как можно заменить англ. на русский язык? А то многие не понимают и уходят… :-)

  2. Ольга

    Константин, ещё раз здравствуйте! Я всё-таки докопалась до истины. Видимо на момент написания Вашей статьи плагин создавал только spam-free-wordpress/tl-spam-free-wordpress.php и spam-free-wordpress/index.php. Может быть сам плагин изменился или из-за более поздней версии WordPress теперь эти строчки находятся в файле spam-free-wordpress/includes/functions.php. Именно там заменила их на русские слова и всё стало отображаться на русском языке. Думаю мои старания не пройдут даром и пригодятся ещё кому-нибудь.

    1. Константин

      Ольга, очень вам благодарен, спасибо за найденное решение данной проблемы.

Комментарии запрещены.