2017-12-06 21 views
0

wp_update_postを使用して投稿categoryを変更して更新しますか?カテゴリは、<a>または<button>wp_update_postカテゴリアンカーからクリック

をクリックして変更する必要があります。これまでのところ、私はこの記事を更新する必要があります。

$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(); ?> 
+0

ちょうどajaxを使用してください。それでおしまい。 –

+0

ありがとう、Dipak。私は質問を閉じることができるので、あなたは答えにどのように置くことができる任意のチャンス。乾杯。 – Darren

+0

ループと更新ポストコード –

答えて

1

あなたがフックアップスクリプトにAJAXリクエストを行う必要があります。フックアップワードプレスでAJAXは少し奇妙ですが、ではなく、あなたのためにそれを実行しようと、あなたはWordPressのコーデックスでドキュメントをご覧ください:

https://codex.wordpress.org/AJAX_in_Plugins

あなたは基本的にするアクションを追加しようとしていますフォーム入力からポストカテゴリIDを渡す場合は、JSを使用してPOST要求でそのIDを送信し、そのIDを取得してカテゴリを更新します。

これが役に立ちます。

  1. フォームを作成します。あなたのためにそれを記述することなく、さらに多くの私の答えを絞り込むしようとする

    EDIT

    <?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 
    } 
    

    。私は(あなたはAJAXはcat_idパラメータを含むとPOSTリクエストを作成する必要がWPテンプレートでループに$cat_idとして、これはname="cat_id"select入力のいくつかの種類を持っており、各optionの後、value

  2. を想像することは、これを引っ張りますselect入力のvalueから)。ここに私が過去に作ったものがあります。私は私の例(custom_update_category)でadd_actionの接尾辞としてaction同じことを名前の

     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. 注意してください。 cat_idが選択入力から取得され、AJAX要求のdataオブジェクトに送信されています。

  4. このdataオブジェクトを使用すると、そのスクリプト内でPHP内で$cat_idを取得できます。

これはactionという名前が実際にキーです。

+0

更新していただきありがとうございます。私は自分自身で多くの進歩を遂げていません。ちょうどそれの周りに私の頭を得ることができません。投稿カテゴリを変更するには本当にAJAXが必要ですか? – Darren

+0

あなたは基本的にブラウザイベントを要求しています。リンクをクリックすると、カテゴリの更新を開始できます。クライアント(ブラウザ)とサーバー(WP)の間の接続を確立する必要があります – plushyObject

+0

、ありがとうございます。 – Darren

関連する問題