আমি যেমন উল্লেখ করেছি আমি তাত্ক্ষণিকভাবে এই প্রয়োজনের উপর কাজ শুরু করতে যাচ্ছি তাই আমি এগিয়ে যাচ্ছি। এই যে আমি এগুলি ছিটকে যাচ্ছি তা দিয়ে আমি অনুভব করেছি যে তাদের পোস্ট করা শুরু করা ভাল। তবুও, যদি আমি অন্য অংশগুলি না করে পোস্ট (কিছু) পোস্ট করতে পারি তবে আমি খুশি হব যে আমি যা করেছি তা অনুলিপি করে দিতে এবং আপনার উত্তরটিকে সেরা উত্তর হিসাবে নির্বাচন করতে। ততক্ষণে আমি কোড পোস্ট করা শুরু করব।
প্রথম জিনিস: অন্তর্ভুক্ত wp-load.php
:
যেহেতু আমরা শুরু করার জন্য ওয়েবসাইটের মূলটিতে একটি স্ট্যান্ডলোন ফাইল তৈরি করছি যা কেবলমাত্র একটি সাইটের "বুটস্ট্র্যাপ" করতে ব্যবহৃত হবে (আমি আমার বলেছি /my-init.php
) আমরা /wp-load.php
ওয়ার্ডপ্রেস এপিআই ফাংশনগুলি লোড করে শুরু করে :
<?php
include "wp-load.php";
সাইটের জন্য ব্যবহারকারী তৈরি করা হচ্ছে
আমরা আমাদের ব্যবহারকারী তৈরি করতে wp_insert_user()
অবস্থিত ফাংশনটি ব্যবহার করব /wp-includes/registration.php
। এই ফাইলটি ডিফল্টরূপে লোড হয় না তাই আমাদের একটি কল দিয়ে এটিকে নিজেরাই লোড করতে হবে require_once()
।
get_user_by()
ব্যবহারকারীটি ইতিমধ্যে তৈরি করা হয়েছে কিনা তা দেখতে আমরা প্রথমে ফাংশনটি ব্যবহার করব ; কোড না থাকলে দুবার চালানোর দরকার নেই। দ্রষ্টব্য: এটি একটি প্যাটার্ন অনুসরণ করবে; উদাহরণস্বরূপ, আমাদের স্ক্রিপ্টটি একাধিকবার বলা হলে ডুপ্লিকেট বা ওভাররাইট করা উচিত নয়, বিশেষত ব্যবহারকারীরা যে কোনও আইটেমটি শুরু করার জন্য পরিকল্পনা করি সেগুলির জন্য ডেটা যুক্ত বা পরিবর্তন করার পরে।
require_once( ABSPATH . WPINC . '/registration.php');
$user = get_user_by('slug','johnsmith');
if (!is_object($user)) {
wp_insert_user(array(
'user_login' => 'johnsmith',
'role' => 'administrator',
'user_email' => 'johnsmith@example.com',
'user_url' => 'http://example.com',
'first_name' => 'John',
'last_name' => 'Smith',
'comment_shortcuts' => '',
'use_ssl' => '0',
'user_pass' => '12345',
));
}
"হ্যালো ডলি" প্লাগইন মোছা হচ্ছে
"হ্যালো ডলি" প্লাগইন মুছতে ( দুঃখিত ম্যাট ) আমরা delete_plugins()
ফাংশনটি ব্যবহার করব । ডিরেক্টরিগুলির সাথে delete_plugins()
সম্পর্কিত ফাইল পাথের একটি অ্যারের প্রত্যাশা করে /wp-content/includes/
। জন্য হ্যালো ডলি প্লাগইন ফাইল পাথ সহজভাবে হয় hello.php
যেহেতু হ্যালো ডলি প্লাগইন এটা নিজস্ব ডিরেক্টরির মধ্যে সঞ্চয় করা হয় না কিন্তু অধিকাংশ প্লাগিন জন্য এটি আকারে হতে হবে {$subdir}\{$filename}.php
; অর্থাত্ আকিসমেটের ফাইল পথ akismet/akismet.php
।
যাইহোক, delete_plugins()
প্রাপ্তিসাধ্য যতক্ষণ না আমরা অন্তর্ভুক্ত করেছি নয় /wp-admin/includes/plugin.php
এবং সেখানে সাথে নির্ভরতা এর wp-admin/includes/file.php
তাই আমরা require_once()
যারা উভয় আগে আমরা কল delete_plugins()
। অবশেষে আমরা মুছে ফেলার চেষ্টা করার আগে প্রধান প্লাগইন ফাইল উপস্থিত রয়েছে কিনা তা দেখার জন্য আমরা WP_PLUGIN_DIR
ধ্রুবক একত্রিত ব্যবহার file_exists()
করি ( এটি যদি আমরা কোনও হারিয়ে যাওয়া ফাইল মুছতে চেষ্টা করি না তবে এটি প্রথমে চেক করা আরও মার্জিত এবং আপনাকে কীভাবে জানতে হবে তা জানা দরকার) অন্য কোনও কারণে) :
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
if (file_exists(WP_PLUGIN_DIR . '/hello.php'))
delete_plugins(array('hello.php'));
নোট করুন যে কখনও কখনও delete_plugins()
ফাইল অনুমতিগুলির কারণে বা সম্ভবত একটি প্লাগইন বর্তমানে সক্রিয় হওয়ার কারণে বা আপনাকে প্রথমে সমাধান করতে হবে এমন অন্য কোনও কারণে ব্যর্থ হয়ে যাবে তবে আমাদের ব্যবহারের ক্ষেত্রে হ্যালো ডলি লড়াই ছাড়াই চলে যায় away
সংগ্রহস্থল প্লাগইনগুলি ডাউনলোড, ইনস্টল এবং সক্রিয় করা হচ্ছে
আমার এখনই সংগ্রহশালা থেকে প্লাগইনগুলি ডাউনলোড করার দরকার নেই (আমি ভাবছিলাম এটি থাকলে খুব ভাল লাগবে) আমরা এই প্রয়োজনীয়তাটি স্লাইড করতে দেই এবং পরে এটি পুনরায় দেখতে পাচ্ছি।
আপনার প্লাগিনগুলি সক্রিয় করা হচ্ছে
পরবর্তীটি আমাদের নিজস্ব কাস্টম প্লাগইনগুলি সক্রিয় করছে। আমরা ধরে নিচ্ছি যে আমরা ইতিমধ্যে সেগুলি প্লাগইন ডিরেক্টরিতে আপলোড করেছি এবং এটি করার দরকার আমাদের এগুলি ওয়ার্ডপ্রেসের জন্য সক্রিয় করতে। ( দ্রষ্টব্য : এই কৌশলটি রিপোজিটরি প্লাগইনগুলি সক্রিয় করার জন্যও কাজ করবে, এটি কেবল প্রথমে ডাউনলোড এবং ইনস্টল করবে না))
আমরা ব্যবহার করব activate_plugin()
ফাংশন যা পছন্দ delete_plugins()
প্রয়োজন /wp-admin/includes/plugin.php
অন্তর্ভুক্ত করা কিন্তু না প্রয়োজন /wp-admin/includes/file.php
যদি আপনি শুধুমাত্র অ্যাক্টিভেশন এবং মুছে ফেলার স্বয়ংক্রিয় প্রয়োজন হয়।
আমরা আবার অস্তিত্বের জন্য পরীক্ষা করব (সেখানে না থাকলে সক্রিয় করার দরকার নেই, তাই না) এবং is_plugin_active()
প্লাগইন ইতিমধ্যে সক্রিয় হয়নি এমন ফাংশনটি ব্যবহার করে যাচাই করব । দ্রষ্টব্য, বহুবার প্লাগইন শনাক্তকারীকে সদৃশ করা থেকে বিরত রাখতে আমি কয়েকটি ভেরিয়েবল ব্যবহার করেছি ( $plugin_filepath
এবং $plugin_dir
)।
আমাদের উদাহরণ অনুসরণ করে যে উপ my-custom-plugin.php
- my-custom-plugin
ডিরেক্টরিতে অবস্থিত প্লাগইনটিকে সক্রিয় করে :
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
$plugin_filepath = 'my-custom-plugin/my-custom-plugin.php';
$plugin_dir = WP_PLUGIN_DIR . "/{$plugin_filepath}";
if (file_exists($plugin_dir) && !is_plugin_active($plugin_filepath))
activate_plugin($plugin_filepath);
আপনার পছন্দসই থিমটি সক্রিয় করা হচ্ছে
তুলনামূলকভাবে বলতে গেলে কোনও প্লাগইন মোছা বা সক্রিয় করার চেয়ে কোনও থিম সক্রিয় করা কিছুটা সহজ; এক ফাংশন কল যে সব প্রয়োজন বোধ করা হয় হল: switch_theme()
। switch_theme()
ফাংশন দুই গ্রহণ (2) : পরামিতি টেমপ্লেট এবং স্টাইলশীট । ভাল, কমপক্ষে এটিই প্যারামিটারগুলির নাম দেওয়া হয়েছে। অভিভাবক থিম এবং শিশু থিম শব্দগুলির সাথে আপনি আরও পরিচিত হতে পারেন ।
ধরে নিই যে আপনি ডিফল্ট টুয়েন্টি টেন থিমটি সহ একটি চাইল্ড থিম তৈরি করেছেন যা ওয়ার্ডপ্রেসকে মূল থিম হিসাবে দেখাবে এবং আপনি এটিকে "আমার কাস্টম থিম" বলেছেন এবং এটি /wp-content/themes/my-custom-theme
ডিরেক্টরিতে রেখেছেন, আপনি এই কলটি ব্যবহার করে আপনার থিমটি সক্রিয় করবেন:
switch_theme('twentyten', 'my-custom-theme');
তবে এটি যদি চাইল্ড থিম না হয়? এটি সহজ, কেবল ডিরেক্টরি স্লাগ / থিম শনাক্তকারী (/wp-content/themes
উভয় প্যারামিটার হিসাবে এটিতে আপনার ডিরেক্টরি অন্তর্ভুক্ত করা সাব-ডাইরেক্টরির নাম ) পাস করুন । ধরে নিই যে আপনি ইয়ান ডি স্টুয়ার্ট দ্বারা থিম্যাটিক থিমটি সক্রিয় করতে চান আপনি যেমন কল করেছেন :switch_theme()
switch_theme('thematic', 'thematic');
ব্যক্তিগতভাবে আমি মনে করি যে এখানে উভয় বিশদই ট্র্যাক করে রাখা কিছুটা খারাপ লাগবে তাই আমি একটি ফাংশন লিখেছিলাম যাতে activate_my_theme()
প্রথমে এটি পরীক্ষা করে নিশ্চিত করা যায় যে এটি get_current_theme()
ফাংশনটি সক্রিয় করে তোলে কিনা এবং এটি সক্রিয় না করে। আপনাকে কেবল শিশু থিমটি বলতে হবে (ওরফে "স্টাইলশিট") এবং এটি ফাংশন থেকে বিশদটি ধরে আপনার জন্য পিতামাতার থিমটি ("টেমপ্লেট" ওরফে) খুঁজে বের করে get_theme()
।
activate_my_theme('My Current Theme');
function activate_my_theme($theme_name) {
if ($theme_name!=get_current_theme()) {
$theme = get_theme($theme_name);
switch_theme(
$theme['Template'],
$theme['Stylesheet']
);
}
}
সচেতন হওয়ার একটি মূল বিষয় ; get_theme()
ফাংশন আশা পাস করা নাম শিশু থিম, এর নয় এটা ডিরেক্টরি স্লাগ্ / থিম আইডেন্টিফায়ার। (নামটি থিমের style.css
ফাইলের শিরোনামের "থিমের নাম:" বিভাগ থেকে আসে Fort ভাগ্যক্রমে get_current_theme()
ফাংশনটিও নামটি ফেরত দেয়))
হেডার পরিদর্শন style.css
ওয়ার্ডপ্রেস ডিফল্ট থিম ফাইল কুড়ি দশ আমরা দেখতে এটা নাম আসলে 'Twenty Ten'
:
/*
Theme Name: Twenty Ten
Theme URI: http://wordpress.org/
Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.
Author: the WordPress team
Version: 1.1
Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style
*/
"হ্যালো ওয়ার্ল্ড" পোস্ট মুছে ফেলা হচ্ছে
এরপরে আমরা "হ্যালো ওয়ার্ল্ড" পোস্টটি মুছতে চাই । আপনি দেখতে পেয়েছেন যে @ রার্স্ট আমাদের wp_delete_post()
ফাংশনটি কীভাবে ব্যবহার করতে হবে তা আমাদের দেখিয়েছে যা আমাদের প্রয়োজন ঠিক। যেমনটি তিনি ব্যাখ্যা করেছিলেন দ্বিতীয় প্যারামিটারটি পোস্টটিকে আবর্জনায় স্থানান্তরিত করার বিপরীতে পোস্টটিকে পুরোপুরি মুছে ফেলবে এবং প্রথম প্যারামিটারটি হ'ল $post->ID
।
অবশ্যই এটির পরিবর্তে স্লাগটি নির্দিষ্ট করতে সক্ষম হবেন $post->ID
এবং তাই আমি এটি করার উপায় খুঁজে বের করার সিদ্ধান্ত নিয়েছি। কিছুটা স্প্ল্যাঙ্কিংয়ের পরে আমি দেখতে পেলাম যে ওয়ার্ডপ্রেসের একটি দুর্ভাগ্যক্রমে নামকরণ করা ফাংশন রয়েছে get_page_by_path()
যা আসলে আমাদের স্লাগ দ্বারা কোনও পোস্ট টাইপ সন্ধান করতে দেয় (দুর্ভাগ্যক্রমে এর নামকরণ করা হয়েছে কারণ পোস্টের প্রকারের সাথে কাজ করে এমন কিছু সন্ধান করার সময় আপনি এটি উপেক্ষা করতে পারেন 'page'
))
যেহেতু আমরা get_page_by_path()
ওয়ার্ডপ্রেস-সংজ্ঞায়িত ধ্রুবকটি পেরিয়ে যাচ্ছি OBJECT
এটি আমাদের কাছে কোনও পোস্ট অবজেক্টের আকারে একটি পোস্ট ফিরিয়ে দেবে। তৃতীয় প্যারামিটারের জন্য আমরা এটি প্রেরণ করেছি 'post'
যে আমরা এটি পোস্টের ধরণের অনুসন্ধান করতে চাই 'post'
। যেহেতু get_page_by_path()
আমাদের প্রয়োজনীয় পোস্ট অবজেক্টটি ফেরত আসবে বা null
কোনও পোস্ট স্লাগের সাথে মেলে না তার সাথে ফিরে আসবে আমরা অস্তিত্বের জন্য যাচাই করতে পারি এবং একই সাথে একটি অনুসন্ধান করতে পারি:
$post = get_page_by_path('hello-world',OBJECT,'post');
if ($post)
wp_delete_post($post->ID,true);
দ্রষ্টব্য: ডাটাবেসের প্রতিটি পোস্ট মুছে ফেলার জন্য আমরা রান কোডটি থাকতে পারতাম তবে আমরা যদি রাখতে চাই যে পোস্টগুলি যুক্ত করে ফেলেছিলাম তবে আমরা এই কোডটি আবার চালাতে পারতাম না এবং এটি ছিল আমাদের নকশার সীমাবদ্ধতাগুলির একটি।
পরবর্তী...
আমার কাজ শেষ না হওয়া অবধি বা অন্য কেউ সাহায্য না করা পর্যন্ত আমি এটিকে যুক্ত করে রাখব।
Create Menus for Custom Pages
? আপনি কিছু পৃষ্ঠায় স্বতন্ত্র মেনু অঞ্চল মানে বা কি?