ভূমিকা।
উপরের স্ক্রিনশটে আপনি প্রিমিয়াম প্লাগইন রিয়েল মিডিয়া লাইব্রেরি সহ একটি ফোল্ডার কাঠামো দেখতে পাচ্ছেন । এখন আমি একটি এক্সটেনশন প্লাগইন তৈরি করতে চাই যা ফোল্ডার কাঠামোটিকে শারীরিক ফোল্ডারের কাঠামোতে সংগঠিত করতে পারে - আরএমএল কেবল ভিজ্যুয়াল স্ট্রাকচার।
আপডেট # 2 (2017-01-27): উত্তরটি দেখুন!
কটাক্ষপাত আছে ওয়ার্ডপ্রেস মিডিয়া লাইব্রেরি দৈহিক সংস্থা (রিয়াল মিডিয়া লাইব্রেরী প্লাগইন) যেখানে আমি একটি মুক্ত এক্সটেনশন প্লাগইন তৈরি করেছেন।
আপডেট # 1 (2016-12-14): প্রথম সাফল্য: কাস্টম থাম্বনেল আপলোড ফোল্ডার
এখন, আমি আর একটি প্লাগইন তৈরি করেছি রিয়েল থাম্বনেইল জেনারেটর , যা আপনাকে কাস্টম থাম্বনেল আপলোড ফোল্ডার তৈরি করতে দেয়। এই স্ক্রিনশটটি একবার দেখুন:
কাস্টম থাম্বনেল ফোল্ডার কেন? কাস্টম থাম্বনেইল ফোল্ডারগুলি বজায় রাখা সহজ, কারণ এখানে, আমাদের ডাটাবেস আপডেট URL গুলি বজায় রাখার দরকার নেই কারণ থাম্বনেইলগুলি এখনও একই স্থানে রয়েছে (যা এখনও আরএমএল এক্সটেনশন দ্বারা পরিবর্তিত হয়নি)।
আপনি যদি কাস্টম থাম্বনেল জেনারেটর সম্পর্কে আরও জানতে চান, আপনি এই থ্রেডটিতে একবার নজর রাখতে পারেন, যেখানে আমি একটি প্রযুক্তিগত পদ্ধতির ব্যাখ্যা করেছি কাস্টম আপলোড ডিরেক্টরিতে প্রতিটি কাস্টম চিত্রের আকার? ।
দয়া করে এই থ্রেডটি চালু রাখুন, কারণ 2017 সালের শুরুতে আমি আরএমএল এক্সটেনশনের বিকাশ চালিয়ে যাব যা আরএমএল এবং সার্ভার আপলোড ফোল্ডারের মধ্যে সুসংগতকরণের অনুমতি দেয়। এক্সটেনশনটি রিয়েল থাম্বনেল জেনারেটর প্লাগইনের সাথেও সামঞ্জস্যপূর্ণ, তাই ডাটাবেস আপডেট হওয়া উচিত।
আসল পোস্ট
আমার এক্সটেনশন লক্ষ্য।
এই মুহুর্তে আমি "/ অসংগঠিত" ফোল্ডারে আছি, তার অর্থ এটি ফোল্ডার / ডব্লিউপি-সামগ্রী / আপলোডস /। আমি যখন ফাইলটি (যেমন আপনি স্ক্রিনশটটিতে দেখতে পাচ্ছেন) ফোল্ডারে পিডিএফ / সাবডিরে সরিয়ে নিই তখন ফাইলটি ভিজ্যুয়াল ফোল্ডারে থাকে। এখন আমার এক্সটেনশানটি বিভিন্ন ফোল্ডারটিকে দৈহিক একটিতে সনাক্ত করে এবং একটি সামান্য "বোতাম" দেখায় যা ব্যবহারকারীকে এটি শারীরিকভাবেও স্থানান্তর করতে দেয়:
ব্যবহারকারী এখন "ফিজিক্স এটি!" বোতামে ক্লিক করুন এবং ফাইলটি /wp-content/uploads/pdfs/subdir/Another-Doc.pdf এ সরানো উচিত । আমি ইতিমধ্যে সরানোর প্রক্রিয়াটি তৈরি করেছি: আমি এই সংযুক্তির জন্য সমস্ত মিডিয়া ফাইলগুলি (চিত্রগুলির জন্য অন্তর্ভুক্ত থাম্বনেইলস) পড়েছি এবং ডাব্লুপি ফাংশন ডাব্লুপিএমপিডির_পি () এর সাথে পিএইচপি ফাংশনটির পুনর্নবীকরণ ($ old_file, $ new_file) ব্যবহার করি । মধ্যে GUID wp_posts টেবিল এবং মেটা ডেটা wp_postmeta পরিবর্তন করা হয়, খুব। সমস্ত ফাইল সরানো হলে, আমি অ্যাকশনটি কল করি:
<?php
do_action('RML/Physix/Moved', $meta, $id);
// $meta = Infos about the move process, see above screenshot
// $id = The attachment ID
?>
ta মেটা একটি অ্যারে:
কী "পুনর্নামকরণ" এ সমস্ত পুনর্নবীকরণ প্রক্রিয়া থাকে (উদাহরণস্বরূপ এখানে চিত্রগুলির জন্য থাম্বনেইল ফাইল হতে পারে)।
সমস্যা: গ্যারান্টি প্লাগইন সামঞ্জস্য।
ওয়ার্ডপ্রেস মিডিয়া লাইব্রেরির মূল সমস্যা (যদি তা হয়) হ'ল, অনেক প্লাগইন সংযুক্তি আইডির পরিবর্তে পুরো ইউআরএল সহ চিত্রগুলির রেফারেন্সগুলি সংরক্ষণ করে। তার অর্থ, কলামগুলির সাথে মাইএসকিউএল টেবিল রয়েছে যা প্রদত্ত ফাইলে একটি URL রয়েছে। আমি কীভাবে গ্যারান্টি দিতে পারি যে সমস্ত উল্লেখগুলি শারীরিক ফোল্ডারগুলির সাথে আপ টু ডেট আছে ? আমি মনে করি এটি অসম্ভব।
একটি সম্ভাব্য পন্থা।
আমি অ্যাকশনে প্রবেশ করি এবং এসকিউএল-এ পুনরাবৃত্তির পুনঃস্থাপন-বিবৃতি সহ ডাব্লুপি_পোস্ট-> পোস্ট_কন্টেন্টের মতো স্ট্যান্ডার্ড টেবিলগুলি আপডেট করি ।
<?php
/**
* When a attachment is moved.
*
* @hooked RML/Physix/Moved
*/
function physix_moved($meta, $id) {
$rename = $meta["rename"];
// Prepare array for recursive REPLACE
$arr = array();
foreach ($rename as $value) {
$arr[] = array($value["old_url"], $value["new_url"]);
}
$rec = $this->recReplace($arr, "post_content"); // function is already finished
}
?>
$ রেক ভেরিয়েবল এখন একটি প্রতিস্থাপন-বিবৃতি:
REPLACE(post_content, 'https://example.io/wp-content/uploads/Another-Doc.pdf', 'https://example.io/wp-content/uploads/pdfs/subdir/Another-Doc.pdf')
যাইহোক: সমস্ত থাম্বনেইল ফাইল সহ একটি চিত্রের জন্য (साक्षीচিহ্ন.জেপিজি) এটি দেখতে এটি দেখতে পারেন:
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(post_content, 'https://example.io/wp-content/uploads/testimage-750x350.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-750x350.jpg'), 'https://example.io/wp-content/uploads/testimage-1170x855.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1170x855.jpg'), 'https://example.io/wp-content/uploads/testimage-256x187.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-256x187.jpg'), 'https://example.io/wp-content/uploads/testimage-1024x748.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1024x748.jpg'), 'https://example.io/wp-content/uploads/testimage-300x219.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-300x219.jpg'), 'https://example.io/wp-content/uploads/testimage-150x150.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-150x150.jpg'), 'https://example.io/wp-content/uploads/testimage.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage.jpg')
তবে কি হবে, যদি এটি ডাটাবেস সারণীতে ক্রমিকযুক্ত স্ট্রিং (জেএসএন) হয়? তাই দেখে মনে হচ্ছে { "image": "http:\/\/example.io\/wp-content\/uploads\/Another-Doc.pdf" }
। প্রতিস্থাপন-বিবৃতিতে আমার কী যুক্ত করতে হবে?
প্রতিস্থাপন-বিবৃতি এখন সমস্ত মাইএসকিউএল টেবিলের সাহায্যে ব্যবহার করা যেতে পারে যার মধ্যে চিত্রের URL রয়েছে s আমি একটি ফিল্টার অ্যারে তৈরি করার কথা ভেবেছিলাম যেখানে প্লাগইনগুলি তাদের টেবিলগুলি যুক্ত করতে পারে এবং আমার এক্সটেনশানটি বাকীটি করতে পারে:
<?php
$tables = apply_filters("RML/Physix/Moved/Tables", array( // TODO: use $wpdb->prefix
"wp_posts" => array("post_excerpt", "post_content"),
"wp_postmeta" => array("meta_value")
//...
));
?>
"সরানো" লগ
আমি একটি "লগ" তৈরি করতে চাই যেখানে ব্যবহারকারীরা চালগুলি পূর্বাবস্থায় ফিরিয়ে আনতে পারে। কোনও ব্যবহারকারী যদি দেখেন যে কোনও চিত্র ভাঙা হয়েছে (উদাহরণস্বরূপ স্লাইডার রেভোলিউশন প্লাগইনে), তিনি মূল ফোল্ডারে সরানোটিকে পূর্বাবস্থায় ফিরিয়ে আনতে পারেন।
আপনি এই ধারণা সম্পর্কে কি মনে করেন? এর চেয়ে ভাল সমাধান কি আছে? আমি আশা করি আমি সুন্দরভাবে সমস্ত ব্যাখ্যা করেছি!