কনটেন্ট ট্রট এজেএক্স দিয়ে একটি থিকবক্স খুলুন


11

আমি টিনিএমসিএর সম্পাদকটিতে একটি কাস্টম বোতাম যুক্ত করেছি এবং আমি যখন ডাব্লুপিপি এর থিকবক্সে ক্লিক করতে চাই তখন এটি খুলতে চাই।

আমি কীভাবে এটি তৈরি করতে পারি যাতে tb_show()ফাংশনটি এজ্যাক্সের সাথে আমার পছন্দসই সামগ্রী লোড করে?

// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
  echo 'weqwtegeqgr'; // <- this should be displayed in the TB
  die();
}

আমি যে কয়েকটি সম্পাদক প্লাগইন কোড ব্যবহার করছি তা এখানে:

init : function(ed, url) {
  ed.addButton('do_stuff', {
    title : 'Do Stuff',
    image : url + '/icon.gif',
    onclick : function() {
        OpenMyThickbox('do_stuff');
    }
  });
...

সুতরাং OpenMyThickboxজাভাস্ক্রিপ্ট ফাংশনটি আমার যা করা উচিত তা করা উচিত:

function OpenMyThickbox(tag){
  tb_show(tag, '...'); // <- how to load content trough ajax here ?
}

অ্যাডমিন_আরএল ('অ্যাডমিন-আজাক্স.এফপি') ব্যবহার করুন; URL এর জন্য
Bainternet

আমি একটি ফাঁকা পৃষ্ঠা পেয়েছি। এমনকি আমি যদি google.com প্রবেশ করি
অনেট্রিকপনি

উত্তর:


6

এর জন্য দ্বিতীয় প্যারামিটারটি tb_showইউআরএল, সুতরাং আপনি এর মতো কিছু ব্যবহার করতে চাইবেন ...

<?php 
$ajax_url = add_query_arg( 
    array( 
        'action' => 'getTheContent', 
        'query_var1' => 'value1', 
        'query_var2' => 'value2' 
    ), 
    admin_url( 'admin-ajax.php' ) 
); 
?>
tb_show(tag, '<?php echo $ajax_url; ?>' );

আমি অনুমান করতে পারি যে আপনাকে অ্যাকশনটি সরবরাহ করতে হবে এবং কোনও অতিরিক্ত কোয়েরি ম্যানুয়ালি (উপরের মতানুসারে) পাস করতে হবে, অন্যথায় আপনার অনুরোধটি কেবল admin-ajax.phpতখনই হয় যখন আপনি যা সন্ধান করছেন তা ... এর লাইন বরাবর কিছু admin-ajax.php?action=getTheContent&someothervar=someothervalue, সুতরাং add_query_argউপরের ব্যবহারটি। ।

স্পষ্টতার জন্য:

নিম্নলিখিত কল add_query_arg...

add_query_arg( 
    array( 
        'action' => 'getTheContent', 
        'query_var1' => 'value1', 
        'query_var2' => 'value2' 
    ), 
    admin_url( 'admin-ajax.php' ) 
);

সমান এবং উত্পাদন করবে ...

http://example.com/wp-admin/admin-ajax.php?action=getTheContent&query_var1=value1&query_var2=value2

যাহোক!

এখন নিজেকে ব্যাখ্যা করার পরে আমি বুঝতে পেরেছি যে আমরা নিখুঁত ইউআরএল চাই না এবং সুতরাং admin_urlসেখানে কল করার দরকার নেই। কোডটি পরিবর্তে হওয়া উচিত।

<?php 
$ajax_url = add_query_arg( 
    array( 
        'action' => 'getTheContent', 
        'query_var1' => 'value1', 
        'query_var2' => 'value2' 
    ), 
    'admin-ajax.php'
); 
?>
tb_show(tag, '<?php echo $ajax_url; ?>'); 

ফলস্বরূপ ইউআরএলটি দেখতে এরকম কিছু দেখাচ্ছে ..

admin-ajax.php?action=getTheContent&query_var1=valu1&query_var2=value2

উপরের কোড নমুনাগুলিতে উল্লিখিত ফাংশন:


$_get['action']ওয়ার্ডপ্রেস অজ্যাক্স কল সন্ধান করার কারণে এটি কি হবে না $_post['action']? আমি নাকি ভুল করছি?
বেন্টারনেট

এটি সাধারণত একটি এজাক্স কলব্যাকের অভ্যন্তরে $_POSTবা এর $_REQUESTঅভ্যন্তরে থাকবে, যদি না আপনি স্পষ্টভাবে getপরিবর্তে আপনার এজ্যাক্স অনুরোধ ফাংশনটি ব্যবহার করার জন্য সেট করেন তবে একটি পুরুবাক্স কলের প্রসঙ্গে আমরা একটি ক্যোয়ারী স্ট্রিং ব্যবহার করি যা এখনও প্রদর্শিত হবে $_REQUEST(কারণ এটি সাধারণত উভয়কেই ধরে রাখে $_GETএবং $_POST) ..
t31os

না, আমি যা জিজ্ঞাসা করছি তা যদি আমি ব্যবহার করি তবে add_query_argযুক্ত করা আর্গগুলি কি কোনও পোস্ট হিসাবে পাঠানো হবে বা পাবেন?
বেন্টারনেট

না হয়, add_query_argকোয়েরি প্যারামিটারগুলির সাথে একটি স্ট্রিং (ইউআরএল)
সংযোজন

আমার উত্তর আপডেট করেছে ..
t31os

3

জাভাস্ক্রিপ্ট এবং পিএইচপি মেস আপ করা খুব চালাক নয়। এই উত্তরটি শুধুমাত্র বিভ্রান্ত।

tb_shos হল জাভাস্ক্রিপ্ট add_query_arg পিএইচপি হয়

সুতরাং এই সমাধানটি কেবল পিএইচপি-তে বৈধ এবং সঠিক কোডটি

...
?>
tb_show(
  'whatever',
  <?php echo add_query_arg( array(
    'action' => 'getTheContent',
    'query_var1' => 'value1',
    'query_var2' => 'value2',
  ), 'admin-ajax.php'); ?>
);
<?php
...

এবং জাভাস্ক্রিপ্টে মোটেও বৈধ নয় কারণ আমরা add_query_arg ব্যবহার করতে পারি না


এটির <?php ?>ট্যাগ থাকা ছাড়া এটি সমাধানের চেয়ে আলাদা কোথায় ? আপনি যদি উল্লেখ করতে চান এমন সমস্ত কিছু হয় তবে দয়া করে এটি সংশোধন করার জন্য একটি সম্পাদনা করুন। অন্য উত্তরের সাথে কী ভুল তা বোঝাতে আলাদা আলাদা উত্তর যুক্ত করার দরকার নেই। এজন্য সম্প্রদায় সম্পাদনাগুলি প্রশংসিত হয়।
কায়সার 13

@ কাইজার সম্পাদনাগুলি কোনও পোস্টের অর্থ পরিবর্তন করে সাধারণত স্বাগত হয় না। পৃথক উত্তর হিসাবে এটি ঠিক আছে।
ফুসিয়া

@ টসচো এবং এটি ঠিক কীভাবে অর্থটির পরিবর্তন করছে ? ইমো এটি সংশোধন করছে বা হারিয়ে যাওয়া বিটগুলি যুক্ত করছে
কায়সার

বেয়েন এখানে ভুলটি উল্লেখ করতে সঠিক ছিল, আমি পিএইচপি এবং জাভাস্ক্রিপ্ট মিশ্রিত করছিলাম, আমার খুব শীঘ্রই এটি হওয়া উচিত। আমি আমার উত্তরে প্রয়োজনীয় পরিবর্তন করেছি, এবং প্রতিক্রিয়া বেয়েনের জন্য ধন্যবাদ (আমি কখন ভুল করি তা জানতে চাই)।
t31os
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.