જેમ જેમ તમે વર્ડપ્રેસ વિકાસમાં નિષ્ણાત બનશો, તેમ તેમ તમને ક્યારેક એવી પરિસ્થિતિઓ આવશે કે જ્યાં બધું અપેક્ષા મુજબ કામ નહીં કરે, અને તમે જાણવા માંગશો કે તે શા માટે થઈ રહ્યું છે.
આ પાઠમાં, તમે વર્ડપ્રેસમાં બિલ્ટ-ઇન ડિબગીંગ વિકલ્પો વિશે શીખશો.
પ્રથમ, તમે શીખશો કે તમારો કોડ ડિબગીંગ એટલે શું. ત્યાર બાદ, તમે શીખશો કે ડિફોલ્ટ વર્ડપ્રેસ ઇન્સ્ટોલેશનમાં કયા બિલ્ટ-ઇન ડિબગીંગ વિકલ્પો ઉપલબ્ધ છે અને તેમને કેવી રીતે સક્રિય અને ઉપયોગ કરી શકાય.
ડિબગીંગ શું છે?
ડિબગીંગ એ તમારી કોડમાં ભૂલો શોધવા અને સુધારવાની પ્રક્રિયા છે.
વર્ડપ્રેસની મુખ્ય બે પ્રોગ્રામિંગ ભાષાઓ PHP અને JavaScript છે, તેથી તમારે બંને ડિબગ કરવાની ક્ષમતા હોવી જોઈએ.
JavaScript કોડ બ્રાઉઝરમાં ચલાવવામાં આવે છે, ટેસ્ટિંગ અને ડિબગીંગ હેતુ માટે સીધે સીધું console.log() નો ઉપયોગ કરીને બ્રાઉઝર કન્સોલમાં સંદેશાઓ લખવામાં આવે છે.
બીજી બાજુ, PHP સર્વર પર ચલાવવામાં આવે છે, તેથી જો કંઈક ખોટું જાય, તો તે શોધવા માટે તમને અલગ રીતો જરૂરી છે.
ઉન્નત ડિબગીંગ માટે, તમે Xdebug અથવા Ray જેવા તૃતીય-પક્ષ (third-party) ટૂલ્સનો ઉપયોગ કરી શકો છો.
પરંતુ આ પાઠ નો હેતુ એ છે કે, તમે એવા વિકલ્પો શીખશો જે વર્ડપ્રેસમાં ડિફોલ્ટ રૂપે ઉપલબ્ધ છે અને કોઈ વધારાના સોફ્ટવેરની જરૂર નથી.
PHP ડિબગીંગ
વર્ડપ્રેસમાં, જ્યારે પણ કોઈ વિનંતી (request) પ્રક્રિયાવિધિ ચાલે છે, ત્યારે ડીબગિંગ વાતાવરણ સેટ કરવા માટે wp_debug_mode() ફંક્શન ફંક્શન ચલાવવામાં આવે છે. આ ફંક્શન wp-includes/load.php ફાઇલમાં આવેલ છે.
જો તમે આ કોડ જોશો, તો તમે જોઈ શકો છો કે જો WP_DEBUG કોન્સ્ટન્ટ true પર સેટ કરેલ છે, પછી PHP એર્રોર રિપોર્ટિંગ નું લેવલ E_ALL સેટ કરે છે, જેનો અર્થ એ છે કે બધી એર્રોર રિપોર્ટિંગ ઓન થાય.
વધુમાં, જો WP_DEBUG_DISPLAY ને true પર સેટ કરેલ હોય, તો તે display_errors PHP સેટિંગને 1 પર સેટ કરે છે, જેનો અર્થ એ થાય કે સ્ક્રીન પર આ ભૂલોનું પ્રદર્શન ચાલુ કરો.
છેલ્લે, જો WP_DEBUG_LOG ને true પર સેટ કરેલ હોય, તો તે error_log PHP સેટિંગને wp-content/debug.log ફાઇલ પર સેટ કરે છે. ડિફોલ્ટ સિવાય, કસ્ટમ debug.log ફાઇલ સ્થાનને કોન્ફિગર કરવું પણ શક્ય છે.
જો આ લોગ ફાઇલ અનેબલ હશે, તો તે PHP ની log_errors સેટિંગને 1 પર સેટ કરશે, અને error_log સેટિંગને લોગ ફાઇલના પાથ પર સેટ કરશે, જેનો અર્થ એ છે કે બધી ભૂલો આ ફાઇલમાં લોગ થશે.
આ જ્ઞાનનો ઉપયોગ કરીને, તમે વર્ડપ્રેસ ડિબગીંગને અનેબલ કરવા માટે તમારી wp-config.php ફાઇલને કોન્ફિગર કરી શકો છો.
ડિબગીંગ સક્રિય કરવું
ડિબગીંગ સક્ષમ કરવા માટે, wp-config.php ફાઇલ ખોલો અને જ્યાં WP_DEBUG કોન્સ્ટન્ટ સેટ કરેલ છે ત્યાં સુધી નીચે સ્ક્રોલ કરો.
તમારે નીચે આપેલા કોડ મુજબ એ સેટિંગ અપડેટ કરવું પડશે:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );
આ સેટિંગ દ્વારા:
- ડિબગીંગ સક્રિય થશે
- સ્ક્રીન પર ભૂલો દેખાવાની વ્યવસ્થા બંધ થશે
- wp-content/debug.log ફાઈલમાં ભૂલો લૉગ થશે
તમારી વ્યક્તિગત પસંદગીના આધારે, તમે સ્ક્રીન પર ભૂલો પ્રદર્શિત કરવાનું સક્ષમ કરી શકો છો, પરંતુ આનાથી ભૂલો ચૂકી શકે છે અથવા સ્ક્રીન પર અન્ય મહત્વપૂર્ણ કન્ટેન્ટને ઓવરલે કરી શકે છે, જે આદર્શ નથી.
વધુમાં, જો તમે ક્યારેય પ્રોડક્શન સાઇટ પર કોઈ સમસ્યાને ડીબગ કરી રહ્યા છો, તો તમારે સ્ક્રીન પર ભૂલો પ્રદર્શિત કરવી જોઈએ નહીં, કારણ કે આનાથી વપરાશકર્તાને સંવેદનશીલ માહિતી પ્રદર્શિત થઈ શકે છે.
આને વ્યવહારમાં જોવા માટે, ચાલો એક ઉદાહરણ જોઈએ.
ધારો કે તમે નીચેના કોડ સાથે એક પ્લગઇન વિકસાવ્યું છે:
<?php
/**
* Plugin Name: WP Learn Debugging
* Plugin Description: A plugin to learn about debugging in WordPress.
* Plugin URI: https://learn.wordpress.org
* Version: 1.0.0
*/
/**
* Set up the required form submissions table
*/
register_activation_hook( __FILE__, 'wp_learn_setup_table' );
function wp_learn_setup_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'form_submissions';
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar (100) NOT NULL,
email varchar (100) NOT NULL,
PRIMARY KEY (id)
)";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
/**
* Register the REST API GET route
*/
add_action( 'init', 'wp_learn_register_routes' );
function wp_learn_register_routes() {
register_rest_route(
'wp-learn-form-submissions-api/v1',
'/form-submissions/',
array(
'methods' => 'GET',
'callback' => 'wp_learn_get_form_submissions',
'permission_callback' => '__return_true'
)
);
}
/**
* Fetch the form submissions for the REST API GET Route
*
* @return array|object|stdClass[]|null
*/
function wp_learn_get_form_submissions() {
global $wpdb;
$table_name = $wpdb->prefix . 'form_submission';
$results = $wpdb->get_results( "SELECT * FROM $table_name" );
return $results;
}
આ પ્લગઇન ડેટાબેઝમાં ફોર્મ સબમિશન ટેબલ બનાવે છે જ્યારે તે સક્રિય થાય છે, અને પછી ડેટાબેઝમાંથી ફોર્મ સબમિશન મેળવવા માટે REST API GET રૂટ રજીસ્ટર કરે છે.
પરીક્ષણના હેતુ માટે, તમે form_submissions કોષ્ટકમાં મેન્યુઅલી થોડા રેકોર્ડ દાખલ કર્યા છે.
જોકે, જો તમે REST API GET રૂટની મુલાકાત લો છો, તો તમને કોઈ ફોર્મ સબમિશન દેખાતા નથી, તેથી તમારે તમારા કોડમાં બગ્સ શોધવાનું શરૂ કરવાની જરૂર છે.
ફક્ત ડિબગીંગ સક્ષમ કરવાથી, તમારા કોડમાંની કોઈપણ ભૂલો આપમેળે wp-content/debug.log ફાઇલમાં લોગ થઈ જાય છે. તેથી જો તમે એક નજર નાખો, તો તમને ભૂલો લોગ થઈ ગઈ હશે તે દેખાશે.
[02-Jun-2023 13:51:41 UTC] PHP Notice: Function register_rest_route was called <strong>incorrectly</strong>. REST API routes must be registered on the <code>rest_api_init</code> action. Please see <a href="https://wordpress.org/documentation/article/debugging-in-wordpress/">Debugging in WordPress</a> for more information. (This message was added in version 5.1.0.) in /home/ubuntu/wp-local-env/sites/learnpress/wp-includes/functions.php on line 5865
આ કિસ્સામાં, બે ભૂલો નોંધાઈ રહી છે. પ્રથમ વર્ડપ્રેસ દ્વારા ટ્રિગર થયેલી PHP નોટિસ છે, જે wp_learn_register_routes ફંક્શનને ખોટી ક્રિયા પર હૂક કરવાથી થાય છે. બીજી ભૂલ ફોર્મ સબમિશન મેળવવા માટે ચલાવવામાં આવતી ડેટાબેઝ ક્વેરી સંબંધિત છે.
એવું લાગે છે કે તે form_submission ટેબલ પર ક્વેરી કરી રહ્યું છે, form_submissions નહીં.
એકવાર તમે આ ભૂલોને સુધારીને REST API GET રૂટની મુલાકાત લો, પછી તમે ફોર્મ સબમિશન થતા જોશો.
error_log સાથે ડીબગીંગ
વધુમાં debug.log ફાઇલમાં ભૂલો લોગ કરવા ઉપરાંત, તમે PHP error_log ફંક્શનનો ઉપયોગ કરીને debug.log ફાઇલમાં સંદેશાઓ અથવા વેરીએબલ્સ પણ લોગ કરી શકો છો.
આ ફંક્શન એક જ સ્ટ્રિંગ પેરામીટર સ્વીકારે છે.
ઉદાહરણ તરીકે, જો તમે debug.log ફાઇલમાં ચાલી રહેલી SQL ક્વેરી લોગ કરવા માંગતા હો, તો તમે નીચેના કોડનો ઉપયોગ કરી શકો છો:
error_log( $wpdb->last_query );
જો તમે વિનંતીને રીફ્રેશ કરો છો અને debug.log ફાઇલ જુઓ છો, તો તમે ક્વેરી ફાઇલમાં લોગ થયેલ જોશો.
[02-Jun-2023 13:55:35 UTC] SELECT * FROM wp_form_submissions
SAVEQUERIES કોન્સ્ટન્ટનો ઉપયોગ કરીને
વધુમાં છેલ્લી ક્વેરી લોગ કરવા ઉપરાંત, તમે વર્ડપ્રેસ વિનંતી જીવનચક્ર દરમિયાન ચલાવવામાં આવતી બધી ક્વેરી પણ લોગ કરી શકો છો.
આ કરવા માટે, તમે તમારી wp-config.php ફાઇલમાં SAVEQUERIES કોન્સ્ટન્ટને સક્ષમ કરી શકો છો.
define( 'SAVEQUERIES', true );
એકવાર તમે આ કોન્સ્ટન્ટને સક્ષમ કરી લો, પછી તમે નીચેના કોડનો ઉપયોગ કરીને બધી ક્વેરીઓ લોગ કરી શકો છો:
error_log( print_r( $wpdb->queries, true ) );
આ error_log ફંક્શન $wpdb->queries ના array ને debug.log ફાઇલમાં લોગ કરવા માટે PHP print_r() ફંક્શન સાથે ઉપયોગ કરે છે.
આ array માં વર્ડપ્રેસ વિનંતી જીવનચક્ર દરમિયાન ચલાવવામાં આવેલી બધી ક્વેરીઝ શામેલ છે અને જો SAVEQUERIES કોન્સ્ટન્ટ સક્ષમ હોય તો જ ઉપલબ્ધ છે.
વધુ વાંચન
વર્ડપ્રેસમાં ડિબગીંગ વિશે વધુ માહિતી માટે, વર્ડપ્રેસ ડેવલપર ડોક્યુમેન્ટેશનના એડવાન્સ્ડ એડમિનિસ્ટ્રેશન ક્ષેત્રમાં વર્ડપ્રેસમાં ડિબગીંગ વિભાગ તપાસો.