Помогите с функционалом плиз) Для каждого кастомного поста можно добавить таймер (ACF), по истечению которого, статус поста должен меняться на draft. Я подключил плагин jQuery Countdown, куда передается дата с ACF, есть ивент который вызывает функцию, когда счетчик доходит до нуля. Осталось только написать функцию которая будет менять статус текущего поста. Помогите кто чем сможет))
Что мешает использовать стандартную функцию wp_update_post для этих целей? Изменяете значение post_status на draft и дело сделано. Или есть подводные камни, которые я не вижу?
Спасибо, почти получилось. Теперь у меня есть функция в function.php и мне нужно ее вызвать в плагине. Пишут что только через Ajax, но что то не получается... Вот php PHP: function postStatus() { $postID = get_the_ID(); $my_post = array( 'ID' => 58, 'post_status' => 'publish' ); wp_update_post( $my_post ); } Вот js Код (Javascript): var liftoffTime = new Date(); liftoffTime = new Date('<?=get_sub_field('offer_time_left'); ?>'); $('.offer-time-left').countdown({ until: liftoffTime, expiryText: '<div class="over">Offer is over</div>', onExpiry: liftOff, format: 'd h m', labels: ['y', 'm', 'w', 'd', 'hrs', 'mins', 's'], labels1 : ['y', 'm', 'w', 'd', 'hr', 'min', 's'] }); function liftOff() { $.ajax({ url:"function.php", data:"id=2", success: function(){ postStatus(); } }) }
1. Вам нельзя обновлять статус поста из ajax. Так как это будет выполняться из под неавторизованного пользователя и любой пользователь может манипулировать этим. 2. Ваш JS код - это какой-то ад, который непонятно как должен работать. Мне кажется, или вы действительно вызываете функцию PHP из JS кода?
2. в JS вызывается плагин "счетчик" с опциями. И да, мне нужно вызвать ее из js. Что бы по истечению таймера менялся статус поста
Вам следует разобраться как работает клиент-сервер и вообще Web. Где и что запускается и как взаимодействует. И тогда многие вопросы отпадут сами собой.
я не спорю, но сейчас стоит именно такая задача. Скажи пожалуйста реально вообще сделать так как я собираюсь?
Реально, с помощью еще одного AJAX, но, на мой взгляд, такой подход вообще не оправдан. Да и вообще изменять что-то на сервере по команде браузера невторизованного пользователя - это ну очень плохо. У вас есть значение на сервере: get_sub_field('offer_time_left'). Ну так и делайте с ним что вам нужно на сервере. Если время вышло, ставьте посту статус драфт или что-то еще. Зачем это делать из JS браузера? Чтобы проверить, что время вышло используйте wp_cron или меняйте статус непосредственно перед запросом. Да путей много, как сделать, у вас же непонятно что: PHP прямо из JS (что просто невозможно), и прочие страсти.
get_sub_field же записывает просто дату,которая не меняется, сам счетчик же плагином отсчитывается. Или я что то не так понял...? Или сравнивать дату филда с текущей и если они совпадают менять статус?