Вырезать Trackbacks/Pingbacks из шаблона WordPress

HL
На сайте с 12.12.2012
Offline
118
3665

Здравствуйте. Есть довольно-таки старый проект на WordPress, в котором с самого первого дня его существования были отключены трекбеки и пингбеки

Параметры->Обсуждение, сняты галочки:

- Пытаться оповестить блоги, упоминаемые в статье

- Разрешить оповещения с других блогов (уведомления и обратные ссылки)

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

Листинг файла comments.php:

<?php
/**
* @package WordPress
* @subpackage Default_Theme
*/

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

if ( post_password_required() ) { ?>
<h2 id="post-header">Эта запись защищена паролем. Введите пароль для просмотра комментариев.</h2>
<?php
return;
}
?>

<!-- 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'); ?>
</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 if ( ! empty($comments_by_type['pings']) ) : ?>
<h4>Trackbacks/Pingbacks</h4>

<ol class="pinglist">
<?php wp_list_comments('type=pings&callback=list_pings'); ?>
</ol>
<?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>

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>Вы должны <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">войти</a> чтобы комментировать.</p>
<?php else : ?>

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

<?php if ( $user_ID ) : ?>

<p>Вошли как <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Выйти из аккаунта">Выход »</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; ?>" <?php if ($req) echo "aria-required='true'"; ?> />
</p>

<p>
<label for="email"><small>Ваша почта (скрыта) <?php if ($req) echo "(обязательно)"; ?></small></label><br />
<input type="text" class="tf" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
</p>

<p>
<label for="url"><small>Адрес блога</small></label><br />
<input type="text" class="tf" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
</p>

<?php endif; ?>

<p><small><strong>XHTML:</strong> Вы можете использовать эти теги: <code><?php echo allowed_tags(); ?></code></small></p>

<p>
<textarea name="comment" id="comment" cols="50%" rows="8" class="af"></textarea>
</p>

<p>
<input name="submit" type="submit" class="st" value="Отправить" id="submit" alt="Отправить свой комментарий" />
<?php comment_id_fields(); ?>
</p>
<?php do_action('comment_form', $post->ID); ?>

</form>

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

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

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

<?php if ( ! empty($comments_by_type['pings']) ) : ?>
<h4>Trackbacks/Pingbacks</h4>

<ol class="pinglist">
<?php wp_list_comments('type=pings&callback=list_pings'); ?>
</ol>
<?php endif; ?>

А так же хотим вырезать защиту комментариев паролем (не используется):

<?php
/**
* @package WordPress
* @subpackage Default_Theme
*/

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

if ( post_password_required() ) { ?>
<h2 id="post-header">Эта запись защищена паролем. Введите пароль для просмотра комментариев.</h2>
<?php
return;
}
?>

и требование авторизоваться для комментирования (если комментарии разрешены - они всегда открыты):

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>Вы должны <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">войти</a> чтобы комментировать.</p>
<?php else : ?>

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

- Дорогой выкуп баннерных показов (https://goo.gl/Haxr87). Советую! - СеоПульт (https://seopult.ru/ref/0c1642776e7e1b04) + крауд-ссылки (https://goo.gl/3eXcqn) = успех - Проверенный CashBack сервис (https://goo.gl/mAIbxw). До 30%
HL
На сайте с 12.12.2012
Offline
118
#1

Пока ждали ответа, решили методом научного тыка почикать. Убрали 2 куска кода из 3-х.

Еcли убрать этот код (последний в списке):

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>Вы должны <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">войти</a> чтобы комментировать.</p>
<?php else : ?>
то пропадает форма комментариев. Как его можно подрезать ?

Несмотря на работоспособность сайта, прошу людей понимающих в php и вордпрессе подсказать, ничего ли мы не упустили ? Или лишнего ничего не вырезали ?

Спасибо. Очень надеемся на ответ.

SocFishing
На сайте с 26.09.2013
Offline
118
#2
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>Вы должны <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">войти</a> чтобы комментировать.</p>
<?php else : ?>

Вам нужно убрать до строки

<?php endif; ?>

Логика такая:

if - если (<?php if ( get_option('comment_registration') && !$user_ID ) : ?>)
[тут код]
else - иначе (<?php else : ?>)
[такой код]
endif - конец условия (<?php endif; ?>)

У вас же вырезано

if - если (<?php if ( get_option('comment_registration') && !$user_ID ) : ?>)
[тут код]
else - иначе (<?php else : ?>)

и оставлено

[такой код]
endif - конец условия (<?php endif; ?>)

Если там что-то нужное, то просто уберите

<?php endif; ?>
★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
HL
На сайте с 12.12.2012
Offline
118
#3

Понятно, но не очень. Удалил конец условия, протестировал под администратором и гостем, вроде бы все работает, но прошу перепроверить на наличие багов и недочетов.

// <?php if ( get_option('comment_registration') && !$user_ID ) : ?>

// <p>Вы должны <a href="/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">войти</a> чтобы комментировать.</p>
// <?php else : ?>


<form action="/wp-comments-post.php" method="post" id="cf">

<?php if ( $user_ID ) : ?>

<p>Вы вошли как: <noindex><a href="/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Выйти из аккаунта">Выход &raquo;</a></noindex></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; ?>" <?php if ($req) echo "aria-required='true'"; ?> />
</p>

<p>
<label for="email"><small>Ваша почта (не публикуется) <?php if ($req) echo "(обязательно)"; ?></small></label><br />
<input type="text" 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; ?>
<p><small>Для того, что бы оставить комментарий достаточно заполнить поля с именем и адресом электронной почты, который не будет отображаться посетителям на странице.</small></p>
<p><small>Буду очень признателен, если Вы оставите упоминание о данном блоге у себя на сайте.</small></p>

<textarea name="comment" id="comment" cols="50%" rows="8" class="af"></textarea>
<script type="text/javascript">
function addsmile($smile){
document.getElementById('comment').value=document.getElementById('comment').value+' '+$smile+' ';
}
</script>
<?php
global $wpsmiliestrans;
$dm_showsmiles = '';
$dm_smiled = array();
foreach ($wpsmiliestrans as $tag => $dm_smile) {
if (!in_array($dm_smile,$dm_smiled)) {
$dm_smiled[] = $dm_smile;
$tag = str_replace(' ', '', $tag);
$dm_showsmiles .= '<img src="/wp-includes/images/smilies/'.$dm_smile.'" alt="'.$tag.'" onclick="addsmile(\''.$tag.'\');"/> ';
}
}
echo '<div class="smile">'.$dm_showsmiles.'</div>';
?><br />

<?php comment_id_fields(); ?>

<?php do_action('comment_form', $post->ID); ?>

</form>

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

Заранее большое спасибо.

HL
На сайте с 12.12.2012
Offline
118
#4

В файле functions.php нашли следующий код

//////////////////////////////////////////

// Comment and pingback separate controls
//////////////////////////////////////////
$bm_trackbacks = array();
$bm_comments = array();

function split_comments( $source ) {

if ( $source ) foreach ( $source as $comment ) {

global $bm_trackbacks;
global $bm_comments;

if ( $comment->comment_type == 'trackback' || $comment->comment_type == 'pingback' ) {
$bm_trackbacks[] = $comment;
} else {
$bm_comments[] = $comment;
}
}
}
его тоже вырезали за не надобностью.

Все работает, но если не сложно, прошу перепроверить на правильность удаления кода из файлов.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий