Комментарии от записи ко всем записям/страницам.
-
Если я убираю галку с чекбокса записи или страницы о разрешении оставлять комментарии, то у этих записей/страниц форма отправки комментария все-равно остается.
НО. если оставить коммент, то он оставляется первой записе в таблице order by id.
Отображение комментариев по такому же принципу.
С чем это может быть связано и как это вылечить?
тема wsc6
-
Предполагаю, что в теме отсутствует проверка на запрет комментариев.
Нет, дело не в теме.
Попробовал ряд других — проблема сохраниласьПроблема крылась в другом.
Область комментирования отображается только в том случае, если в записи или старнице содержится мой код:<?php global $post; $today = getdate(); if (strlen($today[mon])==1) { $today[mon] = '0'.$today[mon]; } if (strlen($today[mday])==1) { $today[mday] = '0'.$today[mday]; } $now_date = $today[mday].'-'.$today[mon].'-'.$today[year].' 00:00'; echo $now_date.'<br>'; $args = array( 'numberposts' => -1, 'category' => 1 ); $myposts = get_posts($args); foreach( $myposts as $post ) : setup_postdata($post); $post_id_date[] = get_the_id(); $post_id_link[] = get_permalink(); $post_id_title[] = get_the_title(); endforeach; echo '<br><br>'; $arr_count = count($post_id_date); for ($i=0; $i <= $arr_count - 1; $i++) { $custom_fields = get_post_custom($post_id_date[$i]); $my_custom_field = $custom_fields['Дата события']; $event_date = $my_custom_field[0]; if ($event_date) { $date1 = $now_date; $date2 = $event_date; $arr1 = explode(" ", $date1); $arr2 = explode(" ", $date2); $arrdate1 = explode("-", $arr1[0]); $arrdate2 = explode("-", $arr2[0]); $arrtime1 = explode(":", $arr1[1]); $arrtime2 = explode(":", $arr2[1]); $timestamp2 = (mktime($arrtime2[0], $arrtime2[1], 0, $arrdate2[1], $arrdate2[0], $arrdate2[2])); $timestamp1 = (mktime($arrtime1[0], $arrtime1[1], 0, $arrdate1[1], $arrdate1[0], $arrdate1[2])); $difference = floor(($timestamp2 - $timestamp1)/86400); if ($timestamp2 > $timestamp1) { echo '<a href="'.$post_id_link[$i].'">'.$post_id_title[$i].'</a>'; echo ' / осталось дней: '.$difference.' /<br>'; }}} ?>Какая из вызываемых функций может дать такой эффект?
если в записи или старнице содержится мой код:
В записи или в шаблоне записи? Есть разница, знаете ли.
Какая из вызываемых функций может дать такой эффект?
Комментарии обычно выводятся функцией comments_template(), которая полагает, что её вызвали в сингулярном шаблоне, и что на момент вызова в глобальной переменной $post содержится выводимая запись. Если в $post подсунуть что-то другое, то функция будет работать с тем, что подсунули.
В записи или в шаблоне записи? Есть разница, знаете ли.
непосредственно в теле записи.
такс… в global $post есть [comment_status] => open.
если правильно понял, то нужно сменить значение на close.
Тогда прошу рассказать, как изменить значение в глобальном массиве.
$post[comment_status] = 'close';
как и ожидалось — не помогло.Fatal error: Cannot use object of type stdClass as array in C:\AppServ\www\ee\wp-content\plugins\exec-php\includes\runtime.php(42) : eval()’d code on line 3
3 строка — $post[comment_status] = ‘close’;
Юрий, очередное огромное спасибо за помощь!
Решил обнулением $post в конце кода.Тоже вариант. Хотя более кошерным было бы вообще не использовать в своем скрипте зарезервированные переменные, а в случае необходимости использования — сохранять значения в начале скрипта и вертать взад в конце.
Решил обнулением $post в конце кода.
Можно также использовать функцию
wp_reset_postdata().Ну, я пока учусь..)
Сергей, wp_reset_postdata() сейчас попробовал — не то.
Я значения $post в коде никак не изменял. wp_reset_postdata() приводит массив в вид, как только что вызванного. А мне как раз от этого надо было избавиться.
Но все-равно спасибо, функцию себе в заметочки внесу.wp_reset_query()— ещё одна полезная функция 🙂почитал про нее — и правда, полезная)
Я значения $post в коде никак не изменял.
Шутить изволите? foreach( $myposts as $post ) — это тогда что?
Ох, Вы правы, я такой шутник:-)
Признаю ошибку, спасибо
Тема «Комментарии от записи ко всем записям/страницам.» закрыта для новых ответов.