কোনও পোস্টকে ট্র্যাসে স্থানান্তরিত করার সময় সম্পাদন করার কাজ।


9

হাই কি এমন কোনও পদক্ষেপ রয়েছে যা কোনও পোস্টকে ট্র্যাসে সরানোর সময় সম্পাদন করা যায় .... আমি মুছে ফেলা_পস্ট এবং মুছে ফেলা_পস্ট চেষ্টা করেছি। এটি প্রতিটি ক্রিয়াকলাপের জন্য দুবার কাজ করে (কোডেক্সে লিখিত হিসাবে ক্রিয়াটির আগে এবং পরে) এবং পোস্টটি আবর্জনা থেকে মুছে ফেলা হলেই আউটপুট প্রদর্শিত হয়। উদাহরণ আমি লেখককে একটি ইমেল প্রেরণে বলতে চাই যে তার পোস্টটি কোনও কারণে ট্র্যাসে সরানো হয়েছে এবং কিছু ব্যবহারকারী_মেটা আপডেট করুন। যদি আমি ব্যবহার করি

add_action('deleted_post', 'emailUser');

অথবা

add_action('delete_post', 'emailUser');

পোস্টটি ট্র্যাস থেকে মুছে ফেলা হলেই এটি কাজ করে। । ।

আপডেট: ট্র্যাশ পোস্ট ব্যবহার করে এটি কাজ করে

add_action('trash_post', 'emailUser');

তবে ফাংশনটির দ্বিগুণ কার্যকরকরণের জন্য সমস্যাটি এখনও রয়েছে there । ।


1
নীচের সমাধানটি লিখুন এবং উত্তর হিসাবে চিহ্নিত করুন
আশফাম

এটির যথাযথ উত্তর নয় কারণ ফাংশনের দ্বিগুণ কার্যকরকরণ এখনও রয়েছে ...
হরজিৎ সিং

উত্তর:


10

এই কৌতুক করবে!

add_action('trash_post','my_trash_post_function',1,1);
function my_trash_post_function($post_id){
    if(!did_action('trash_post')){
        // do stuff
    }
}

এখানে আমরা ফাংশনটি যুক্ত করব এবং হুকটিকে ডড_অ্যাকশন ব্যবহার করে একাধিকবার কার্যকর করা থেকে রোধ করতে:

http://codex.wordpress.org/Function_Reference/did_action

সর্বদা হিসাবে, আঙ্গুলসমূহ এই ধরনের রূপ নিতে {post_status}_{post_type}, তাই trash_post, trash_page, trash_customposttype, publish_pageইত্যাদি


2

পোস্টটি আবর্জনায় সরানো হয়ে গেলে সেই ক্রিয়াটি একবার কল করা হবে এবং তারপরে আবার ট্র্যাশ খালি হয়ে গেলে।

আপনার ফাংশন নামের পোস্ট আইডি সহ কোনও বিকল্পের উপস্থিতি যাচাই করতে পারে, যদি বিকল্পটি না থাকে তবে এটি ইমেলটি প্রেরণ করে এবং পরে বিকল্পটি সেট করে। বিকল্পটি যদি সেখানে থাকে (যেমন এটি দ্বিতীয় বার বলা হচ্ছে) আপনি ইমেলটি প্রেরণ করবেন না।

বিকল্পটি মোছার জন্য মনে রাখবেন, যাতে আপনার ডাটাবেসগুলি সেগুলি পূরণ করে না!

add_action( 'delete_post', 'emailUser' );

function emailUser( $postid ) {

   if ( ! get_option( 'user_emailed_' . $postid ) ) {
      // send email here
      update_option( 'user_emailed_' . $postid, 'anything' );
   } else {
      delete_option( 'user_emailed_' . $postid );
   }

}

যদি কাজ করে তবে আমাকে জানাবেন!


আপনি বিকল্পগুলির পরিবর্তে ট্রান্সিয়েন্টস এপিআই ব্যবহার করতে পারেন যাতে আপনাকে ডাটাবেস কোডেক্স.ওয়ার্ডপ্রেস.আর
ট্রান্সিয়েন্টস_এপিআই

ধন্যবাদ সাইমন যা দুর্দান্ত কাজ করে। । । । আমি কীভাবে এন এটি মিস করেছি জানি না। । ..
হরজিৎ সিং

বেন্টারনেট, আমি স্থানান্তরগুলি দেখেছি এবং তারা আমার ক্ষেত্রে get_option এর সাথে বেশ অনুরূপ এবং আমি মুছে ফেলা জিনিসটির জন্য get_option দিয়ে স্টিক করতে চাইছি কারণ এক্সিকিউশনটি সার্ভারের কার্যকারিতার উপরও নির্ভর করে এবং মুছে ফেলার আগে এবং পরে কোড প্রয়োগের সময়ের গণনা পোস্ট কঠিন হতে পারে।
হরজিৎ সিং

অতিরিক্ত ক্যোয়ারী যুক্ত করে বিকল্প ক্ষেত্র বা স্থানান্তরগুলি যুক্ত / সম্পাদনা শুরু করার দরকার নেই। এর বদলে হুকটি ইতিমধ্যে চালু হয়েছে কিনা তা পরীক্ষা করার জন্য কেবল ডেট_অ্যাকশন কল করুন।
টম জে নওয়েল

1
add_action('trash_post', 'trash_post_function_name');

উপরের হুকটি আমার জন্য ডাব্লুপি 4.7.5 এ কাজ করে নি।

এটিই আমার পক্ষে কাজ করেছিল

add_action('wp_trash_post', 'trash_post_function_name');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.