অগ্রভাগে অ্যাডমিন-আজাক্স.এফপি যোগ করা হচ্ছে। ভাল না খারাপ ধারণা?


17

আমি অ্যাডমিন- ajax.php পছন্দ করি। তবে এতে ফ্রন্টএন্ড স্ক্রিপ্টগুলি নির্দেশ করার জন্য আমি স্থানীয়করণ হওয়া ঘৃণা করি এবং আমি আশা করি থিমগুলির জন্য একটি সমতুল্য, সন্ধানে সহজ ফাইল রয়েছে। (এটি "সাম্প্রতিক অনুরোধগুলি" / ডাব্লুপি-অ্যাডমিন / "এর মধ্য দিয়ে যেতে দেখে আমাকে বিরক্তও করে practical কোন ব্যবহারিক কারণ নয়, কেবল কুশ্রী আইএমও দেখায়))

সুতরাং আমি "/ajax.php" এ মূল অ্যাডমিন-অজ্যাক্স.এফপি অনুলিপি করেছি, অন্তর্ভুক্ত পাথগুলিকে সামঞ্জস্য করেছি এবং ডাব্লুপি_এডিএমআইএন স্থির সংজ্ঞাটি সরিয়েছি। গ্যাংবাস্টারদের মতো কাজ করার মতো মনে হচ্ছে (আমি এখন কেবল আমার সমস্ত ফ্রন্টএন্ড এজেএক্স অনুরোধগুলি /ajax.php এ সরাসরি পরিচালনা করতে পারি! এবং আমি এখনও আমার প্লাগিনগুলিতে সাধারণ ডাব্লুপি_জ্যাক্স হুক ব্যবহার করতে পারি!)।

তবে এটি কি নিরাপদ? কী ভুল হতে পারে? যেহেতু এটি মূল হিসাবে তৈরি করা হয়নি, আমি ধরে নিই যে কেন এটির কারণ নেই। তবে কোডটি সন্ধান করে আমি কোনও তাত্ক্ষণিক সমস্যা দেখতে পাচ্ছি না।

আপনি স্মার্ট - এই পদ্ধতিটি পাগল কিনা তা আমাকে বলুন। বা যদি এমন কোনও সহজ পদ্ধতি থাকে যা আমি উপেক্ষা করছি।


স্বয়ংক্রিয় আপডেটের সময় আপনি এই ফাইলটি ভুলে যেতে এবং মিস করতে পারেন, যার ফলে জিনিসগুলি ভাঙ্গতে এবং সুরক্ষার দুর্বলতাগুলিকে জায়গায় রেখে দিতে পারে।
হেম

উত্তর:


19

আপনি কেবল নিয়মিত পারমালিঙ্ক পুনর্লিখনের নিয়মের উপরে আপনার .htaccess এ একটি রাইরাইটরুল ব্যবহার করতে পারেন:

RewriteRule ^ajax$ /wp-admin/admin-ajax.php [L]

এখন আপনার AJAX অনুরোধগুলি প্রেরণ করুন example.com/ajax, এবং আপগ্রেডের পরে কখনও সেই ফাইলটিতে মূল পরিবর্তনগুলি মিস করবেন না।


ভালো বুদ্ধি! এটি সেগুলির মধ্যে একটি যা আপনি এটি শোনার পরে, আপনি "এটি এত সহজ এবং সুস্পষ্ট!" ধন্যবাদ।
ম্যাথসম্যাথ

আমি আপনার পরামর্শ অনুসারে পুনর্লিখনের নিয়মটি যুক্ত করেছি তবে example.com/ajaxইউআরএল 404 এর। আপনি ঠিক যেখানে .htaccessএই যোগ করা উচিত মধ্যে ব্যাখ্যা করতে পারেন। আমার কাছে এটি বর্তমানে # BEGIN WordPress <IfModule mod_rewrite.c>এবং</IfModule> # END WordPress
জন

এইটা কাজ করে. আমি পেছনের স্ল্যাশ মিস করছি। আমার কাছে পার্মলিংকস /% পোস্টনাম% /
জন

7

প্রথম: মানীকরণ। আপনি যদি সম্প্রদায় প্লাগইনগুলি ব্যবহার করার পরিকল্পনা করেন, সম্ভাবনা হ'ল তারা /ajax.phpনথির মূলটিতে আপনার ফাইলটির বিষয়ে চিন্তা করে না। সুতরাং তারা এটি ব্যবহার করবে না।

যদি আপনি নিজেরাই সবকিছু রোল করতে চলেছেন তবে এটি কোনও সমস্যা নয়।

দ্বিতীয়: কোর আপডেট হলে? আপনি কি আপনার এজ্যাক্স ফাইলটি পর্যবেক্ষণ এবং পরিবর্তন করবেন?

তৃতীয় : সত্ত্বেও admin-ajax.phpবসবাসকারী wp-admin(। যেমন তালিকা টেবিল, ইত্যাদি), IT প্রশাসকের এলাকায় কাপড় কোন লোড না। লগ-ইন না করা ব্যবহারকারীদের কাছে এটি প্রমাণীকরণ বা সংবেদনশীল কিছু প্রকাশ করে না। এটি ঠিক অন্য কথায় একটি ফ্রন্ট-এন্ড ফাইলের মতো। চিন্তার কিছু.

চতুর্থ: প্রথম ইস্যুর সাথে সম্পর্কিত, কিছু প্লাগইন অন্ধভাবে এজ্যাক্স সম্পর্কিত কার্যকারিতা লোড করার আগে চেক করবে। নীচে একটি উদাহরণ। আপনার পরিবর্তিত এজাক্স.এফপি সম্ভবত এটি লোড হওয়ার কারণ হবে না।

<?php
if (is_admin() && defined('DOING_AJAX') && DOING_AJAX) {
    //  load ajax stuff
}

সবশেষে: আপনি যা অভিযোগ করেন, এজাক্স ইউআরএল পেতে স্থানীয়করণ ব্যবহার করা ভাল কাজ। কেন? কারণ আপনার জেএস ফাইলগুলি কোনও সার্ভার সাইড স্টাফ সম্পর্কে সচেতন নয়। আপনি যে কোনও শক্তিতে গিয়েছেন তাতে URL টি ভেঙে যাবে / কখন সাইটটি সরানো হবে? খারাপ পছন্দ বলে মনে হচ্ছে।

আপনি যদি সত্যই wp_headতাড়াতাড়ি অ্যাজাক্স ব্যবহার করে এমন প্রতিটি স্ক্রিপ্ট স্থানীয় করতে চান না এবং অ্যাডমিন অ্যাজ্যাক্স ইউআরএল স্পিট আউট করতে পারেন। সমস্যা সমাধান হয়েছে (ঠিক ঠিক এভাবেই অ্যাডমিন অঞ্চল এটি করে)।

<?php
add_action('wp_head', 'wpse83650_lazy_ajax', 0, 0);
function wpse83650_lazy_ajax()
{
    ?>
    <script type="text/javascript">
    /* <![CDATA[ */
    var ajax_url = "<?php echo esc_js(admin_url('admin-ajax.php')); ?>";
    /* ]]> */
    </script>
    <?php
}

ধন্যবাদ, ক্রিস! সমস্ত বৈধ পয়েন্ট। আপনি যে বিষয়টি আমাকে বুঝতে সাহায্য করেছেন সবচেয়ে বড় বিষয়টি হ'ল আমি যদিও এটি "কোর হ্যাক" হিসাবে ভাবছিলাম না (যেহেতু আমি একটি ফাইল সংশোধন করছিলাম না, কারণ এটি মূলত অন্যান্য কার্যকারিতার উপর নির্ভর করে যা পরিবর্তিত হতে পারে । অন্য কোনও প্লাগইন (যা মূল কার্যকারিতার পরিবর্তনের পরেও মারা যেতে পারে) থেকে খুব বেশি আলাদা নয় , তবে অবশ্যই দার্শনিকভাবে আলাদা। চিন্তা করার জন্য ধন্যবাদ!
ম্যাথসম্যাট

পুনরায়: " তৃতীয়: ... উদ্বিগ্ন হওয়ার কিছু নেই। ", ডাব্লুপি-অ্যাডমিন ডিরেক্টরিটি লক-ডাউন করার চেষ্টা করার সময় যেমন, জানা-নিরাপদ আইপি রেঞ্জের সীমাবদ্ধ করার জন্য .htaccess বিধিগুলি ব্যবহার করে? আমার ধারণা অজাক্স-অ্যাডমিন.এফপি ফাইলের জন্য কিছু ধরণের ব্যতিক্রম করা দরকার? (আমি "অনুমান" বলি কারণ .htaccess নিয়মগুলি যখন আসে তখন আমি একটি নমপি, এবং সত্যিই জানি না এটি সম্ভব কিনা?)
সেপ্টেম্বর

হ্যাঁ, একক ফাইলের অনুমতি দেওয়া সম্ভব হবে।
chrisguitarguy

@ chrisguitarguy এটি একটি উজ্জ্বল উত্তর, আপনাকে ধন্যবাদ। আমি চেষ্টা করছি আমি অ্যাডমিন-অজ্যাক্স সামনের প্রান্তে লোড করব কারণ আমি সাইটেজটি আমার স্টেজিং / হোম ইউআরএল থেকে বিপরীত করছি। দয়া করে এটি দেখুন: লিঙ্কটি কি তৃতীয় পক্ষের প্লাগইন দিয়ে এটি করা সম্ভব? আমার দৃষ্টিভঙ্গি কি ভুল?
পরানজা

5

ওয়ার্ডপ্রেসে অনেক কিছুর মতোই, বিড়ালটিকে ত্বকে নেওয়ার জন্য অগণিত উপায় রয়েছে। সমস্ত গৃহীত পদ্ধতিগুলি কাজ করার সময়, আমি খুঁজে পেয়েছি যে ডাব্লুপি_লোক্যালাইজ_স্ক্রিপ্টটি সামনের প্রান্তে অ্যাজ্যাক্স ক্ষমতা অন্তর্ভুক্ত করার চেয়ে কম "ঝরঝরে" ।

এটা দেখ:

add_action( 'wp_enqueue_scripts', 'se83650_js' );
function se83650_js()
{
    wp_enqueue_script( 'se83650-js', plugin_dir_url( __FILE__ ) . 'js/se83650.js',  'jquery', '1.0.0', true );
    // First param is the name of the script you are attaching it to - in this case
    // it is the name of the custom script we added.  Second param is the name of 
    // the javscript Object that will be attached with your information.
    // Third param is an array of attributes, in this case, ajaxurl
    wp_localize_script( 'se83650-js', 'se83650Ajax', 
        array(
            // You can put any variables here you want for your script
            // such as plugin-specific variables or nonces, etc.
            'ajaxurl'    => admin_url( 'admin-ajax.php' )
        )
    );
}

এবং তারপরে se83650.jsফাইলটিতে আপনি আপনার ভেরিয়েবলটির সাথে উল্লেখ করতে পারেন se83650Ajax.ajaxurl

এই প্রযুক্তির সুবিধাটি হ'ল যদি আপনি অনেকগুলি প্লাগইনগুলির সাথে শেষ করেন যা এই কার্যকারিতাটি চেষ্টা করে এবং সদৃশ করে, তারা একই ভেরিয়েবলটি অন্তর্ভুক্ত বা ওভাররাইট করে না। ajaxurlঅন্তর্ভুক্ত করা বেশ জেনারিক, এটি আপনাকে আরও অন্তর্ভুক্ত করে এবং এটি অন্যান্য বিকাশকারীদের সাথে আরও ভাল খেলে।

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