Категория 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
}

Чтобы попытаться уточнить мой ответ еще больше, не написав его для вас:

  1. Создайте свою форму. Я представляю, что это имеет какой-то тип select ввод с name="cat_id"а затем value каждого option как $cat_id в цикле в шаблоне WP
  2. Вам нужно создать 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 );
            }
         });
    
  3. Обратите внимание, что я назвал action то же самое, что суффикс на add_action в моем примере (custom_update_category). cat_id захватывается с выбранного входа, а затем отправляется в data объект запроса AJAX.

  4. Используя это data объект, я могу взять $cat_id в моем PHP внутри этого скрипта.

Тот action имя действительно ключ.

Другие вопросы по тегам