সঠিকভাবে প্লাগইনে পিএইচপি ফাইলগুলি কীভাবে অন্তর্ভুক্ত করা যায়


59

আমার সমস্যাটি হ'ল মূল প্লাগইন ফাইলে থাকাকালীন আমি এই জাতীয় কোনও পিএইচপি ফাইল অন্তর্ভুক্ত করি:

include(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
include_once(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
require(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');
// or
require_once(WP_PLUGIN_URL . '/wordpress-group-buying/ipn/paypal-ipn.php');

এবং সেই ফাইলটিতে আমার মতো একটি ওয়ার্ডপ্রেস ফাংশনে কল রয়েছে:

add_action('hook', 'callback');

এবং আমি পেয়েছি:

মারাত্মক ত্রুটি: সংজ্ঞায়িত ফাংশনটিতে কল করুন_

এখন আপনি "ব্যবহার if(**function_exists**('add_action')){" বলার আগে আমি যদি এটি ব্যবহার করি তবে এটি ঠিক কাজ করে না।

প্রশ্নসমুহ:

  • এটি করার সঠিক উপায় কী হবে?
  • মধ্যে পার্থক্য কি কি include, include_once, requireএবং আমি জাদুকরী ব্যবহার করলে না?

আপনি যদি এই বার্তাটি পান তবে আপনি কিছু ভুল করছেন। এই ফাইলগুলি থেকে ফাংশনগুলি চালানো শুরু করার আগে আপনি কোনও ফাইল অন্তর্ভুক্ত করেছেন তা নিশ্চিত করুন
অনেট্রিকপনি

না, কলগুলি আমি অন্তর্ভুক্ত করা ফাইলগুলির মধ্যেই রয়েছে!
বেন্টারনেট

হ্যাঁ, এখন আমি WP_PLUGIN_URLআপনার
কোডটিতে

3
খুব সহজেই লিখুন আপনি কেবল একটি ফাইলপথের মাধ্যমে () ফাইল অন্তর্ভুক্ত করতে পারেন কোনও ইউআরআই নয়।
সম্পাদক

1
এই কোডেক্স নিবন্ধটি (সম্ভবত আপনার প্রশ্ন জিজ্ঞাসার পরে লিখিত) বেশ সহায়ক: কোডেক্স.ওয়ার্ডপ্রেস.আর
হেনরিউইট

উত্তর:


88

এই পার্টিতে দেরিতে আসছেন তবে এখানে "ওয়ার্ডপ্রেস" উপায় রয়েছে: ব্যবহার করুন plugin_dir_path( __FILE__ ), যেমন:

<?php
include( plugin_dir_path( __FILE__ ) . 'ipn/paypal-ipn.php');
?>

মনে রাখবেন যে, ফাংশন নেই আসতে trailing স্ল্যাশ filepath জন্য।


3
নোট করুন যে __FILE__এটি ব্যবহার করে আপনি যে ফাইলটি কল করেছেন সেটির তুলনায় আউটপুট আসবে, সুতরাং আপনার includeবিবৃতিটি যদি আপনার প্লাগইন ফাইলের কাঠামোর মধ্যে একটি উপ-ডিরেক্টরি থেকে করা হয়ে থাকে তবে আপনি আবারও সাব-ডিরেক্টরিকে ফিরে পাবেন।
স্কয়ারকাণ্ডি

বিকল্প - আপনি দরকার আপেক্ষিক পাথ হলrequire_once(plugin_dir_path(__DIR__).'/myfile.inc');
FoggyDay

10

আমি প্লাগিনগুলির অভ্যন্তরে অতিরিক্ত ফাইলগুলি অন্তর্ভুক্ত করেছি এমন বিচিত্র উপায়গুলি দেখতে আমি আগে তৈরি বেশ কয়েকটি প্লাগইন দেখেছিলাম এবং আমি লক্ষ্য করেছি যে আপনি ব্যবহার করতে পারেন এমন দুটি পদ্ধতি রয়েছে, সম্ভবত আরও রয়েছে।

আপনার প্লাগইন ডিরেক্টরিটি সংজ্ঞায়িত করুন

আপনার প্লাগইনের ভিতরে বর্তমান প্লাগইন অবস্থানটি নির্ধারণ করতে নিম্নলিখিত সংজ্ঞা রয়েছে।

উদাহরণ কোড:

define( 'PLUGIN_DIR', dirname(__FILE__).'/' );  

কেবল একটি সোজা আপ অন্তর্ভুক্ত বা প্রয়োজন

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

উদাহরণ কোড:

include "classes/plugin-core.php";

আপেক্ষিক অন্তর্ভুক্ত সমস্ত ধরণের বাজে অপ্রত্যাশিত সমস্যা আনতে পারে।
মার্ক কাপলুন

5

আমি ওয়ার্ডপ্রেস কনস্ট্রাক্টসগুলি সহ অন্তর্ভুক্ত করেছি এবং নিম্নলিখিতগুলি ব্যবহার করে:

require_once(dirname(__FILE__) . '/filename.php);

আমি মনে করি না এটি আসলে আপনার সমস্যাটিকে সমাধান করবে, যা মনে হচ্ছে একটি সুযোগের সমস্যা, তবে এটি আমি ব্যবহার করি কোড।

অন্তর্ভুক্ত এবং প্রয়োজন মধ্যে পার্থক্য হিসাবে:
অন্তর্ভুক্ত একটি নিক্ষেপ করা হবে সতর্কবার্তা ফাইলটি পাওয়া যায় নি
প্রয়োজন একটি নিক্ষেপ করা হবে মারাত্মক ত্রুটি ফাইলটি পাওয়া যায় নি

સમાવેશ_once এবং প্রয়োজনীয়_once ফাইল / কোডটি ইতিমধ্যে অন্তর্ভুক্ত / প্রয়োজনীয় করা থাকলে তা পুনরায় অন্তর্ভুক্ত / প্রয়োজন হবে না (নোট করুন যতদূর আমি বলতে পারি এটি কেবল একটি নির্দিষ্ট ডিরেক্টরিতে একটি নির্দিষ্ট ফাইলের জন্য)।


5

প্রথমে, প্রত্যেককে উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ,

আমার সমস্যা অন্তর্ভুক্ত ফাইলগুলিকে পুরো ইউআরএল দিয়ে কল করছিল যাতে তারা ওয়ার্ডপ্রেস দিয়ে যায় না। এবং এটি ঘটল কারণ আমি প্রশ্নটিতে বলেছি যেহেতু আমি তাদের মূল প্লাগইন ফাইল থেকে কল করছি। সুতরাং সমাধানটি ব্যবহার করে শেষ হয়েছে:

include_once('/ipn/paypal-ipn.php');

আমি ওয়ার্ডপ্রেস সমর্থন সম্পর্কে পড়তে । এবং আবার উত্তর দেওয়ার জন্য ধন্যবাদ!


আপনি কি দয়া করে এই উত্তরটিকে চিহ্নিত করার জন্য পুনর্বিবেচনা করতে পারেন ( wordpress.stackexchange.com/a/32002/123092 ) গৃহীত উত্তর হিসাবে?
আমি সবচেয়ে বোকা ব্যক্তি

4

অন্তর্ভুক্ত করা

অন্তর্ভুক্ত () বিবৃতি নির্দিষ্ট ফাইল অন্তর্ভুক্ত এবং মূল্যায়ন করে।

একবার অন্তর্ভুক্ত করুন

Include_once () বিবৃতিতে স্ক্রিপ্টটি কার্যকর করার সময় নির্দিষ্ট করা ফাইলটি অন্তর্ভুক্ত এবং মূল্যায়ন করা হয়। এটি অন্তর্ভুক্ত () বিবৃতিটির অনুরূপ একটি আচরণ, কেবলমাত্র তফাতটি হ'ল যদি কোনও ফাইলের কোডটি ইতিমধ্যে অন্তর্ভুক্ত করা থাকে তবে এটি আবার যুক্ত করা হবে না। নামটি যেমন বোঝায়, এটি একবারে অন্তর্ভুক্ত করা হবে।

দরকার

প্রয়োজনীয় () প্রয়োজন এবং অন্তর্ভুক্ত () তারা কীভাবে ব্যর্থতা পরিচালনা করে তা ব্যতীত প্রতিটি ক্ষেত্রে অভিন্ন। তারা উভয়ই একটি সতর্কতা উত্পন্ন করে, তবে () এর মারাত্মক ত্রুটির প্রয়োজন হয়। অন্য কথায়, আপনি যদি পৃষ্ঠার প্রসেসিং বন্ধ করতে কোনও অনুপস্থিত ফাইল চান তবে প্রয়োজনীয় () ব্যবহার করতে দ্বিধা করবেন না।

একবার প্রয়োজন

প্রয়োজনীয়_অেন্স () বিবৃতিতে স্ক্রিপ্টটি কার্যকর করার সময় নির্দিষ্ট ফাইলটিকে অন্তর্ভুক্ত করে এবং মূল্যায়ন করে। এটি প্রয়োজনীয় () স্টেটমেন্টের অনুরূপ একটি আচরণ, কেবলমাত্র তফাতটি হ'ল যদি কোনও ফাইলের কোডটি ইতিমধ্যে অন্তর্ভুক্ত করা থাকে তবে এটি আবার যুক্ত করা হবে না।

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


যেমন @ এমটেক্ক বলেছেন আমি আপনাকে টিআইএস কাঠামোটি ব্যবহার করার জন্য পুনঃসংশোধন করব: প্রয়োজনীয়_অনস (ডারনাম ( ফাইল ) '' / ফাইল ফাইল.এফপি);
ওয়েবর্ড

1

হাই @ בניית אתרים:

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

আপনি কে আপনার "প্লাগইন" লোড করতে পাচ্ছেন ? আপনি একটি ব্যবহার করছেন include*()বা require*()এটি লোড করতে, সম্ভবত আপনার wp-config.phpফাইলে?


1
include( plugin_dir_path( __FILE__ ) . 'ipn/paypal-ipn.php');

অথবা

define( 'PLUGIN_ROOT_DIR', plugin_dir_path( __FILE__ ) );
include( PLUGIN_ROOT_DIR . 'ipn/paypal-ipn.php');

অথবা

$plugin_dir_path = plugin_dir_path( __FILE__ );
include( $plugin_dir_path . 'ipn/paypal-ipn.php');

দ্রষ্টব্য: admin_enqueue_scriptsপ্লাগইন ব্যবহারের অভ্যন্তরে .css এবং .js ফাইলগুলিকে এনকুই করতেplugin_dir_url( __FILE__ )

$plugin_dir_uri = plugin_dir_url( __FILE__ );
wp_enqueue_style( 'plugin-style', $plugin_dir_uri . 'css/plugin-style.css');

0

যখনই আপনি আপনার কার্যনির্বাহী ডিরেক্টরিতে একটি নতুন ফাইল তৈরি করেন, আপনাকে এটিকে সর্বদা অন্তর্ভুক্ত করতে হবে। তবে আপনার ডাইরেক্ট্রয়ে স্ক্যান করার জন্য একটি পদ্ধতির চেষ্টা করুন এবং এটি স্বয়ংক্রিয়ভাবে সংযুক্ত করুন, কেবলমাত্র পিএইচপি ফাইলই নয়, যা পিএইচপি, জেএস এবং সিএসএস ফিউলিকে উভয় পক্ষের (ব্যাকএন্ড, সামনের প্রান্ত) যথাযথভাবে অন্তর্ভুক্ত করতে সহায়তা করে।

http://kvcodes.com/2014/05/wordpress-theme-development-include-files-automatically/


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