Категория wp_update_post от клика по ссылке
Хотел бы изменить и обновить сообщение category
с помощью wp_update_post
, Категория должна быть изменена, нажав <a>
или же <button>
Насколько я вижу, это должно применить обновление к посту;
$live_paused = array(
'post_category' => 6
);
// Update the post into the database
wp_update_post( $live_paused );
Но как я могу включить добавить эту функцию к этому
echo '<a href="" id=""><i class="fa fa-pause"></i></a>';
Редактировать - дополнительная информация
Обновление почтового индекса в функциях темы - еще не проверено.
function live_paused_status( $post_id ){
if (current_user_can('edit_post', $post->ID)) {
$live_paused = array(
'post_category' => 6
);
echo '<a href="" id=""><button title="" data-toggle="tooltip" class="campaigns-link-button" type="button" data-original-title="Pause Campaign"><i class="fa fa-pause"></i></button></a>';
// unhook this function so it doesn't loop infinitely
remove_action('save_post', 'live_paused_status');
// update the post, which calls save_post again
wp_update_post( $live_paused );
// re-hook this function
add_action('save_post', 'live_paused_status');
}
}
add_action('save_post', 'live_paused_status');
петля
<?php $query = new WP_Query( array( 'post_type' => 'campaigns'));?>
<?php if ($query->have_posts()) : while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="card">
<div class="card-footer">
<div class="row">
<div class="col-4 campaigns-link">
<?php echo live_paused_status(); ?>
</div>
</div>
</div>
</div>
<?php endwhile; wp_reset_postdata(); ?>
1 ответ
Вам нужно сделать AJAX-запрос к скрипту, который вы подключили. Подключить AJAX в WordPress немного странно, но вместо того, чтобы пытаться сделать это за вас, вам следует взглянуть на документацию в Кодексе WordPress:
https://codex.wordpress.org/AJAX_in_Plugins
Вы собираетесь добавить действие, которое в основном будет передаваться идентификатору категории сообщения из формы ввода, вы будете использовать JS для отправки этого в запросе POST, а затем получите этот идентификатор и обновите категорию.
Надеюсь это поможет.
РЕДАКТИРОВАТЬ
<?php
add_action( 'wp_ajax_custom_update_category', 'custom_update_category' );
function custom_update_category() {
$cat_id = sanitize_text_field( $_POST['cat_id']); //passed from AJAX. Make sure to escape it just in case.
# update the category here with $cat_id
}
Чтобы попытаться уточнить мой ответ еще больше, не написав его для вас:
- Создайте свою форму. Я представляю, что это имеет какой-то тип
select
ввод сname="cat_id"
а затемvalue
каждогоoption
как$cat_id
в цикле в шаблоне WP Вам нужно создать
POST
запрос с AJAX, содержащийcat_id
параметр (вытягивает это изselect
ввод-хvalue
). Вот один, который я сделал в прошлом.var cat_id = $('#product-cat-select').val(); $.ajax({ type : "POST", url : ajaxurl, data : { action: "custom_update_category", cat_id: cat_id }, success: function(response) { console.log( response ); } });
Обратите внимание, что я назвал
action
то же самое, что суффикс наadd_action
в моем примере (custom_update_category
).cat_id
захватывается с выбранного входа, а затем отправляется вdata
объект запроса AJAX.Используя это
data
объект, я могу взять$cat_id
в моем PHP внутри этого скрипта.
Тот action
имя действительно ключ.