अपने कार्यों के लिए कोड का सबसे अच्छा संग्रह। पीपीपी फ़ाइल [बंद]


331

कृपया प्रश्न या उत्तर के बाईं ओर स्थित यूपी तीर पर क्लिक करके प्रश्न और आपके द्वारा उपयोगी किसी भी उत्तर पर वोट करें।

कई अन्य लोगों के साथ जो अब इस पोस्ट को देख रहे हैं, मैं अपने ब्लॉग कौशल को सीखने और बेहतर बनाने के लिए विभिन्न ब्लॉग, फ़ोरम और चर्चा समूह पढ़ रहा हूं। पिछले 12 महीनों में मैं अपनी functions.phpफ़ाइल में कोड जोड़कर प्लगइन्स के मेरे उपयोग को बदलने के लिए एक मिशन पर रहा हूं । जबकि मैं पूरी तरह से सहमत हूं कि कई स्थितियों में प्लगइन्स बहुत उपयोगी हैं मेरे अनुभव ने साबित किया कि 90% उपयोग के मामलों में हालांकि एक प्लगइन मौजूद हो सकता है, वास्तव में इसका उपयोग करने से अनावश्यक जटिलताएं और संगतता समस्याएं पैदा हो सकती हैं। इसके अलावा मामलों के एक महान सौदे में ऐसे प्लगइन्स मेनू और अन्य व्यवस्थापक तत्वों को जोड़ा जो मुझे नहीं चाहिए या आवश्यकता नहीं है।

अधिक बार नहीं, मैंने पाया है कि मैं कोड के कोड का विश्लेषण करके मैं जो कोड चाहता था उसका टुकड़ा छीनने में सक्षम था और यह मुश्किल कोड था functions.php। अनावश्यक तत्वों को शामिल किए बिना मुझे सटीक कार्यक्षमता प्रदान करने की आवश्यकता थी।

तो, इस पोस्ट का उद्देश्य आपको, पाठक / व्यवस्थापक / डेवलपर को, मेरे साथ और अन्य किसी भी कोड बिट्स को साझा करने के लिए संलग्न करने का मेरा प्रयास है जो आपको उपयोगी लगता है और function.phpवर्डप्रेस का उपयोग किए बिना विस्तार करने या बढ़ाने के लिए अपनी थीम की फ़ाइल में जोड़ा है। लगाना।

जब आप यहां एक प्रतिक्रिया प्रस्तुत करते हैं, तो कृपया प्रत्येक कोड बिट को एक शीर्षक दें, हमें बताएं कि अगर आप इसके संगत वर्डप्रेस के किस संस्करण के साथ जानते हैं, तो जो भी आपको सबसे अच्छा लगता है उसका विवरण और (यदि लागू हो) मूल के लिए एक लिंक शामिल करें। प्लगइन या स्रोत जहां आपको जानकारी मिली।

मैं आपकी सभी प्रतिक्रियाओं का इंतजार कर रहा हूं और निश्चित रूप से जब भी मैं उन्हें पाऊंगा तो अपने खुद के नए खोज को लगातार जोड़ूंगा।


13
ओपी द्वारा पहले 5 उत्तरों को ध्यान में रखते हुए और प्रश्न एक एकल, निश्चित उत्तर के बजाय प्रतिक्रियाओं की एक सरणी एकत्र करने में अधिक सक्षम लगता है, यह एक सामुदायिक विकि होना चाहिए।
ईमान

17
एक विषय से संबंधित सभी उत्तर नहीं हटाए जाने चाहिए। यह कोड खराब कोडिंग प्रथाओं के लिए एक अच्छा उदाहरण है।
FUXIA

17
मुझे लगता है कि लोगों को अपने विषय के कार्यों का उपयोग करने के बजाय एक कस्टम फंक्शनलिटी प्लगइन बनाने के लिए प्रोत्साहित करना बेहतर होगा।
एफपी

3
@ NetConstructor.com पृष्ठ दृश्य की शुद्ध संख्या गुणवत्ता के लिए कोई संकेतक नहीं है। हमें विशिष्ट उत्तरों और अच्छी कोडिंग प्रथाओं के साथ विशिष्ट प्रश्नों को प्रोत्साहित करना चाहिए। यह धागा विपरीत है।
FUXIA

6
@ NetConstructor.com मेटा पर चर्चा करें जहां लोग आपके तर्कों को बेहतर तरीके से देख सकें। :)
FUXIA

जवाबों:


107

सभी साइट सेटिंग्स प्रदर्शित करने वाला हिडन एडमिन फीचर सक्षम करें

पर परीक्षण किया गया: Wordpress 3.1 RC3

कोड का यह छोटा सा टुकड़ा कुछ बहुत अच्छा करता है। यह आपके सेटिंग्स मेनू में "सभी सेटिंग्स" के लिंक के साथ एक अतिरिक्त विकल्प जोड़ेगा, जो आपको आपके वर्डप्रेस साइट से संबंधित आपके डेटाबेस में मौजूद सभी सेटिंग्स की पूरी सूची दिखाएगा। नीचे दिया गया कोड केवल इस लिंक को किसी व्यवस्थापक उपयोगकर्ता के लिए दृश्यमान बना देगा और इसे अन्य सभी उपयोगकर्ताओं के लिए छिपा देगा।

// CUSTOM ADMIN MENU LINK FOR ALL SETTINGS
   function all_settings_link() {
    add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php');
   }
   add_action('admin_menu', 'all_settings_link');

विकास के लिए शानदार! मैं अपने प्लग-इन के लिए DB संस्करणों को संग्रहीत करने के लिए अक्सर विकल्प तालिका का उपयोग करता हूं ... उन्नयन स्क्रिप्ट का परीक्षण करने के लिए एक पुराने DB संस्करण में रीसेट करने के लिए phpMyAdmin का उपयोग करना एक दर्द है ... यह इतना आसान बना देगा !!!
ईमान


89

लॉगिन लोगो और छवि URL लिंक को संशोधित करें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

यह कोड आपको वर्डप्रेस लॉगिन पेज लोगो के साथ-साथ इस लोगो के href लिंक और शीर्षक पाठ को आसानी से संशोधित करने की अनुमति देगा।

add_filter( 'login_headerurl', 'namespace_login_headerurl' );
/**
 * Replaces the login header logo URL
 *
 * @param $url
 */
function namespace_login_headerurl( $url ) {
    $url = home_url( '/' );
    return $url;
}

add_filter( 'login_headertitle', 'namespace_login_headertitle' );
/**
 * Replaces the login header logo title
 *
 * @param $title
 */
function namespace_login_headertitle( $title ) {
    $title = get_bloginfo( 'name' );
    return $title;
}

add_action( 'login_head', 'namespace_login_style' );
/**
 * Replaces the login header logo
 */
function namespace_login_style() {
    echo '<style>.login h1 a { background-image: url( ' . get_template_directory_uri() . '/images/logo.png ) !important; }</style>';
}

संपादित करें: यदि आप लॉगिन लोगो को बदलने के लिए साइट लोगो का उपयोग करना चाहते हैं, तो आप उस जानकारी को गतिशील रूप से खींचने के लिए निम्नलिखित का उपयोग कर सकते हैं ( WP3.5 पर परीक्षण किया गया ):

function namespace_login_style() {
    if( function_exists('get_custom_header') ){
        $width = get_custom_header()->width;
        $height = get_custom_header()->height;
    } else {
        $width = HEADER_IMAGE_WIDTH;
        $height = HEADER_IMAGE_HEIGHT;
    }
    echo '<style>'.PHP_EOL;
    echo '.login h1 a {'.PHP_EOL; 
    echo '  background-image: url( '; header_image(); echo ' ) !important; '.PHP_EOL;
    echo '  width: '.$width.'px !important;'.PHP_EOL;
    echo '  height: '.$height.'px !important;'.PHP_EOL;
    echo '  background-size: '.$width.'px '.$height.'px !important;'.PHP_EOL;
    echo '}'.PHP_EOL;
    echo '</style>'.PHP_EOL;
}

79

खोज परिणामों में कस्टम पोस्ट प्रकार शामिल करें।

// MAKE CUSTOM POST TYPES SEARCHABLE
function searchAll( $query ) {
 if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); } 
 return $query;
}
add_filter( 'the_search_query', 'searchAll' );

डिफ़ॉल्ट रूप से अपने कस्टम पोस्ट प्रकारों को अपनी साइटों के मुख्य RSS फ़ीड में जोड़ें।

// ADD CUSTOM POST TYPES TO THE DEFAULT RSS FEED
function custom_feed_request( $vars ) {
 if (isset($vars['feed']) && !isset($vars['post_type']))
  $vars['post_type'] = array( 'post', 'site', 'plugin', 'theme', 'person' );
 return $vars;
}
add_filter( 'request', 'custom_feed_request' );

"सही अब" व्यवस्थापक डैशबोर्ड विजेट में कस्टम पोस्ट प्रकार शामिल करें

इसमें आपके कस्टम पोस्ट प्रकार और "राइट नाऊ" डैशबोर्ड विजेट में प्रत्येक प्रकार के लिए पोस्ट मायने रखता है।

// ADD CUSTOM POST TYPES TO THE 'RIGHT NOW' DASHBOARD WIDGET
function wph_right_now_content_table_end() {
 $args = array(
  'public' => true ,
  '_builtin' => false
 );
 $output = 'object';
 $operator = 'and';
 $post_types = get_post_types( $args , $output , $operator );
 foreach( $post_types as $post_type ) {
  $num_posts = wp_count_posts( $post_type->name );
  $num = number_format_i18n( $num_posts->publish );
  $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) );
  if ( current_user_can( 'edit_posts' ) ) {
   $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>";
   $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>";
  }
  echo '<tr><td class="first num b b-' . $post_type->name . '">' . $num . '</td>';
  echo '<td class="text t ' . $post_type->name . '">' . $text . '</td></tr>';
 }
 $taxonomies = get_taxonomies( $args , $output , $operator ); 
 foreach( $taxonomies as $taxonomy ) {
  $num_terms  = wp_count_terms( $taxonomy->name );
  $num = number_format_i18n( $num_terms );
  $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms ));
  if ( current_user_can( 'manage_categories' ) ) {
   $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>";
   $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>";
  }
  echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>';
  echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>';
 }
}
add_action( 'right_now_content_table_end' , 'wph_right_now_content_table_end' );

इस उत्तर के लिए अंतिम स्निपेट के बारे में। यह एक बढ़िया अतिरिक्त है क्योंकि मैं इन्हें प्रत्येक पोस्ट प्रकार के लिए मैन्युअल रूप से जोड़ रहा था। मेरे पास एकमात्र मुद्दा यह है कि यह डिफ़ॉल्ट "श्रेणी" और "टैग" प्रविष्टि के बाद डेटा जोड़ता है। क्या आप डिफ़ॉल्ट "श्रेणी" या "टैग" को स्थानांतरित करने के लिए अपने उत्तर को अपडेट कर सकते हैं या उन्हें हटा सकते हैं ताकि उन्हें मैन्युअल रूप से जोड़ा जा सके?
NetConstructor.com

@ NetConstructor.com मुझे नहीं लगता कि मैं आपके अनुरोध को समझता हूं। अगर मैं करता हूं, तो मुझे लगता है कि यह करना थोड़ा मुश्किल होगा, और वास्तव में अभी समय नहीं है कि यह कैसे किया जाए।
जारेडविल्ली

खोज परिणामों में कस्टम पोस्ट प्रकार शामिल करें - मुझे लगता है, अब आप इसे exclude_from_searchपरम के साथ कर सकते हैं register_post_type...
Krzysiek Dró

78

ADMIN उपयोगकर्ता को छोड़कर सभी उपयोगकर्ताओं के लिए अद्यतन अधिसूचना निकालें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

यह कोड सुनिश्चित करेगा कि "एडमिन" के अलावा कोई भी उपयोगकर्ता अपडेट उपलब्ध होने पर वर्डप्रेस द्वारा अधिसूचित न हो।

// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN
   global $user_login;
   get_currentuserinfo();
   if ($user_login !== "admin") { // change admin to the username that gets the updates
    add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
    add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
   }

परिवर्तित संस्करण केवल व्यवस्थापक उपयोगकर्ताओं के लिए अद्यतन अधिसूचना दिखाने के लिए (केवल उपयोगकर्ता 'व्यवस्थापक' के विपरीत):

// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN
       global $user_login;
       get_currentuserinfo();
       if (!current_user_can('update_plugins')) { // checks to see if current user can update plugins 
        add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
        add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
       }

8
यह आदर्श से बहुत कम है। यह तभी काम करेगा जब व्यवस्थापक का लॉगिन अभी भी डिफ़ॉल्ट 'व्यवस्थापक' है, जिसे वह सुरक्षा कारणों से नहीं करेगा। इसके बजाय आपको एक विशिष्ट क्षमता की जांच करनी चाहिए जो आप चाहते हैं कि लोगों को संदेश देखना है।
जर्कलार्क

1
Ie अगर (? Current_user_can ('manage_options')) {... add_filter ...} - दोहरी टिप्पणी के बारे में क्षमा करें, मैं भूल गया कि सबमिट टिप्पणियाँ दर्ज करना)
jerclarke

इसीलिए मैंने उस टिप्पणी को उस कोड में जोड़ा जहां आप व्यवस्थापक उपयोगकर्ता नाम बदल सकते हैं। आप इसे कैसे सुधारेंगे / फिर से लिखेंगे?
NetConstructor.com

सबसे अच्छा तरीका यह है कि वैश्विक $ user_login और get_currentuserinfo () को हटा दें और इसके बजाय अपने clause में current_user_can का उपयोग करें। यह 3 के बजाय केवल 1 लाइन है और इसका मानक तरीका है। आप संदेशों पर अधिनियम के लिए आवश्यक विशिष्ट क्षमता की जांच कर सकते हैं, इस मामले में 'update_core' और 'update_plugins' है।
जर्कलेर्क

2
इसलिए: अगर (? current_user_can ('update_plugins')) {/ *
REMOVE

72

Google CDN से jQuery लोड हो रहा है

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

// even more smart jquery inclusion :)
add_action( 'init', 'jquery_register' );

// register from google and for footer
function jquery_register() {

if ( !is_admin() ) {

    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', ( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' ), false, null, true );
    wp_enqueue_script( 'jquery' );
}
}

सुरक्षा के लिए वर्डप्रेस संस्करण जानकारी निकालें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

// remove version info from head and feeds
function complete_version_removal() {
    return '';
}
add_filter('the_generator', 'complete_version_removal');

फ्रंट एंड पर टिप्पणियों के लिए स्पैम और डिलीट लिंक जोड़ें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

यह स्पैम को हटाकर और लिंक हटाकर सामने के छोर से टिप्पणियों का प्रबंधन करना आसान बनाता है।

// spam & delete links for all versions of wordpress
function delete_comment_link($id) {
    if (current_user_can('edit_post')) {
        echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&c='.$id.'">del</a> ';
        echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&dt=spam&c='.$id.'">spam</a>';
    }
}

आरएसएस फ़ीड के लिए सार्वजनिक पोस्टिंग में देरी

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

अंत में, मुझे अपने आरएसएस के पोस्टिंग में 10-15 मिनट की देरी करना पसंद है क्योंकि मुझे हमेशा अपने पाठ में कम से कम कुछ त्रुटियां मिलती हैं। अन्य उपयोग उस स्थिति में होते हैं जब आप चाहते हैं कि सामग्री आपके RSS पाठकों के लिए धकेलने से एक दिन या एक सप्ताह पहले आपकी साइट के लिए अनन्य हो।

// delay feed update
function publish_later_on_feed($where) {
    global $wpdb;

    if (is_feed()) {
        // timestamp in WP-format
        $now = gmdate('Y-m-d H:i:s');

        // value for wait; + device
        $wait = '10'; // integer

        // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
        $device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

        // add SQL-sytax to default $where
        $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
    }
    return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

मेरे पोस्ट पर स्रोत: wpengineer.com/320/publish-the-feed-later अधिक informations के साथ
bueltge

1
आप जनरेटर फ़िल्टर को भी हटा सकते हैं:remove_action('wp_head', 'wp_generator');
Gipetto

25
ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js सिर्फ एक घंटे के बाद समाप्त हो जाता है। हमेशा पूर्ण संस्करण की जानकारी जैसे ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js - जो एक वर्ष के बाद समाप्त हो जाती है , का उपयोग करें ।
FUXIA

5
"सुरक्षा के लिए वर्डप्रेस संस्करण जानकारी निकालें" कोड वास्तव में आपकी साइट की सुरक्षा बढ़ाने के लिए कुछ भी नहीं करता है। यह आपकी साइट पर उपयोग किए जा रहे WP संस्करण के प्रदर्शन को भी नहीं रोकता है।
जोसेफ स्कॉट

1
सच नहीं जोसेफ, यदि आपका वर्डप्रेस संस्करण उजागर हो गया है, तो लोग देख सकते हैं कि क्या आप एक पुराने संस्करण को चला रहे हैं, इस प्रकार आपकी कमजोरियों को उजागर कर रहे हैं। यह हमेशा एक अच्छा निर्णय है कि सभी वर्डप्रेस इंस्टॉल से हटा दें। व्यक्तिगत रूप से, मुझे यह भी पता नहीं है कि उन्होंने इसे पहले स्थान पर क्यों रखा क्योंकि यह एक सुरक्षा मुद्दा है।
जेरेमी

58

DB ब्लोट से बचने के लिए पोस्ट रिविजन की अधिकतम संख्या निर्धारित करें।

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

डिफ़ॉल्ट अनंत है, यह केवल पिछले 5 संपादनों को याद रखने के लिए सेट करेगा:

/**
 * Set the post revisions unless the constant was set in wp-config.php
 */
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 5);

FWIW CONSTANTS के लिए एक महान विचार है जो कोडेक्स पेज एडिटिंग wp-config.php पर सेट किया जा सकता है ।


क्या इसे प्रति पोस्ट प्रकार के आधार पर सेट किया जा सकता है?
NetConstructor.com

Wp_save_post_revision () में इसके उपयोग को देखते हुए पोस्ट प्रकारों के आधार पर अंतर करने का कोई तरीका प्रतीत नहीं होता है। मूल्य पर कोई फ़िल्टर या कुछ भी नहीं है, हालांकि संभवतः होना चाहिए।
जर्कलेर्क

धन्यवाद जेरेमी - किसी और के लिए, यदि आप जानते हैं कि यह कैसे करना है तो कृपया इसे यहां पोस्ट करें।
NetConstructor.com 7:14

1
व्यक्तिगत रूप से मैं पसंद करता हूं। 10. मुझे पता है कि यह दोगुना है, लेकिन हमेशा जब मुझे एक संशोधन की आवश्यकता होती है तो यह हमेशा पुराना होता है 5
janw

56

वर्डप्रेस प्रोफाइलिंग टूल

मैं एक अलग फाइल में प्रोफाइलिंग टूल जोड़ना पसंद करता हूं, जिसे मैं जरूरत पड़ने पर functions.php से शामिल करता हूं:

<?php
if ( !defined('SAVEQUERIES') && isset($_GET['debug']) && $_GET['debug'] == 'sql' )
    define('SAVEQUERIES', true);
if ( !function_exists('dump') ) :
/**
 * dump()
 *
 * @param mixed $in
 * @return mixed $in
 **/

function dump($in = null) {
    echo '<pre style="margin-left: 0px; margin-right: 0px; padding: 10px; border: solid 1px black; background-color: ghostwhite; color: black; text-align: left;">';
    foreach ( func_get_args() as $var ) {
        echo "\n";
        if ( is_string($var) ) {
            echo "$var\n";
        } else {
            var_dump($var);
        }
    }
    echo '</pre>' . "\n";
    return $in;
} # dump()
endif;

/**
 * add_stop()
 *
 * @param mixed $in
 * @param string $where
 * @return mixed $in
 **/

function add_stop($in = null, $where = null) {
    global $sem_stops;
    global $wp_object_cache;
    $queries = get_num_queries();
    $milliseconds = timer_stop() * 1000;
    $out =  "$queries queries - {$milliseconds}ms";
    if ( function_exists('memory_get_usage') ) {
        $memory = number_format(memory_get_usage() / ( 1024 * 1024 ), 1);
        $out .= " - {$memory}MB";
    }
    $out .= " - $wp_object_cache->cache_hits cache hits / " . ( $wp_object_cache->cache_hits + $wp_object_cache->cache_misses );
    if ( $where ) {
        $sem_stops[$where] = $out;
    } else {
        dump($out);
    }
    return $in;
} # add_stop()


/**
 * dump_stops()
 *
 * @param mixed $in
 * @return mixed $in
 **/

function dump_stops($in = null) {
    if ( $_POST )
        return $in;
    global $sem_stops;
    global $wp_object_cache;
    $stops = '';
    foreach ( $sem_stops as $where => $stop )
        $stops .= "$where: $stop\n";
    dump("\n" . trim($stops) . "\n");
    if ( defined('SAVEQUERIES') && $_GET['debug'] == 'sql' ) {
        global $wpdb;
        foreach ( $wpdb->queries as $key => $data ) {
            $query = rtrim($data[0]);
            $duration = number_format($data[1] * 1000, 1) . 'ms';
            $loc = trim($data[2]);
            $loc = preg_replace("/(require|include)(_once)?,\s*/ix", '', $loc);
            $loc = "\n" . preg_replace("/,\s*/", ",\n", $loc) . "\n";
            dump($query, $duration, $loc);
        }
    }
    if ( $_GET['debug'] == 'cache' )
        dump($wp_object_cache->cache);
    if ( $_GET['debug'] == 'cron' ) {
        $crons = get_option('cron');
        foreach ( $crons as $time => $_crons ) {
            if ( !is_array($_crons) )
                continue;
            foreach ( $_crons as $event => $_cron ) {
                foreach ( $_cron as $details ) {
                    $date = date('Y-m-d H:m:i', $time);
                    $schedule = isset($details['schedule']) ? "({$details['schedule']})" : '';
                    if ( $details['args'] )
                        dump("$date: $event $schedule", $details['args']);
                    else
                        dump("$date: $event $schedule");
                }
            }
        }
    }
    return $in;
} # dump_stops()
add_action('init', create_function('$in', '
    return add_stop($in, "Load");
    '), 10000000);
add_action('template_redirect', create_function('$in', '
    return add_stop($in, "Query");
    '), -10000000);
add_action('wp_footer', create_function('$in', '
    return add_stop($in, "Display");
    '), 10000000);
add_action('admin_footer', create_function('$in', '
    return add_stop($in, "Display");
    '), 10000000);

/**
 * init_dump()
 *
 * @return void
 **/

function init_dump() {
    global $hook_suffix;
    if ( !is_admin() || empty($hook_suffix) ) {
        add_action('wp_footer', 'dump_stops', 10000000);
        add_action('admin_footer', 'dump_stops', 10000000);
    } else {
        add_action('wp_footer', 'dump_stops', 10000000);
        add_action("admin_footer-$hook_suffix", 'dump_stops', 10000000);
    }
} # init_dump()
add_action('wp_print_scripts', 'init_dump');


/**
 * dump_phpinfo()
 *
 * @return void
 **/

function dump_phpinfo() {
    if ( isset($_GET['debug']) && $_GET['debug'] == 'phpinfo' ) {
        phpinfo();
        die;
    }
} # dump_phpinfo()
add_action('init', 'dump_phpinfo');


/**
 * dump_http()
 *
 * @param array $args
 * @param string $url
 * @return array $args
 **/

function dump_http($args, $url) {
    dump(preg_replace("|/[0-9a-f]{32}/?$|", '', $url));
    return $args;
} # dump_http()


/**
 * dump_trace()
 *
 * @return void
 **/

function dump_trace() {
    $backtrace = debug_backtrace();
    foreach ( $backtrace as $trace )
        dump(
            'File/Line: ' . $trace['file'] . ', ' . $trace['line'],
            'Function / Class: ' . $trace['function'] . ', ' . $trace['class']
            );
} # dump_trace()
if ( $_GET['debug'] == 'http' )
    add_filter('http_request_args', 'dump_http', 0, 2);
?>

क्या इसे संशोधित करने का कोई त्वरित तरीका है ताकि स्क्रिप्ट तभी प्राप्त हो जब आपका व्यवस्थापक और डीबग जानकारी दिखाने के लिए URL में कुछ जोड़ दे?
NetConstructor.com

1
यही कारण है कि यह कैसे मेरे विषय में किया है: semiologic.com/software/sem-reloaded - /inc/debug.php /functions.php या /inc/init.php द्वारा शामिल किया गया है (के ऊपर से याद नहीं आ रहा मेरी सिर)।
डेनिस डे बर्नार्डी

52

तीव्र आकार की छवियाँ (केवल jpg)

इस फंक्शन शार्पिंग ने jpg इमेजेस को आकार दिया। अंतर का एक उदाहरण:http://dl.dropbox.com/u/1652601/forrst/gdsharpen.png

function ajx_sharpen_resized_files( $resized_file ) {

    $image = wp_load_image( $resized_file );
    if ( !is_resource( $image ) )
        return new WP_Error( 'error_loading_image', $image, $file );

    $size = @getimagesize( $resized_file );
    if ( !$size )
        return new WP_Error('invalid_image', __('Could not read image size'), $file);
    list($orig_w, $orig_h, $orig_type) = $size;

    switch ( $orig_type ) {
        case IMAGETYPE_JPEG:
            $matrix = array(
                array(-1, -1, -1),
                array(-1, 16, -1),
                array(-1, -1, -1),
            );

            $divisor = array_sum(array_map('array_sum', $matrix));
            $offset = 0; 
            imageconvolution($image, $matrix, $divisor, $offset);
            imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 90, 'edit_image' ));
            break;
        case IMAGETYPE_PNG:
            return $resized_file;
        case IMAGETYPE_GIF:
            return $resized_file;
    }

    return $resized_file;
}   

add_filter('image_make_intermediate_size', 'ajx_sharpen_resized_files',900);

बहुत बेहतर jpegs, एक गुच्छा धन्यवाद! 3.4-अल्फा में परीक्षण किया गया
ब्रासोफिलो

2
अगर u लोग इसे प्लगइन के रूप में चाहते हैं: wordpress.org/extend/plugins/sharpen-resized-images
mnsal Korkmaz

यह समारोह कहाँ जाता है
स्टीवीड

@StevieD - जैसा कि शीर्षक से पता चलता है, यह आपके टेम्पलेट में कार्य करता है। मैं हालांकि सावधान रहूंगा, यह कार्य लगभग 8 वर्ष पुराना है।
timofey.com

51

डिफ़ॉल्ट वर्डप्रेस मेटा बॉक्स निकालें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

यह कोड आपको विशिष्ट मेटा बॉक्सों को हटाने की अनुमति देगा, जो डिफ़ॉल्ट रूप से डिफ़ॉल्ट रूप से एड / एडिट पोस्ट और ऐड / पेज स्क्रीन को जोड़ते हैं।

// REMOVE META BOXES FROM DEFAULT POSTS SCREEN
   function remove_default_post_screen_metaboxes() {
 remove_meta_box( 'postcustom','post','normal' ); // Custom Fields Metabox
 remove_meta_box( 'postexcerpt','post','normal' ); // Excerpt Metabox
 remove_meta_box( 'commentstatusdiv','post','normal' ); // Comments Metabox
 remove_meta_box( 'trackbacksdiv','post','normal' ); // Talkback Metabox
 remove_meta_box( 'slugdiv','post','normal' ); // Slug Metabox
 remove_meta_box( 'authordiv','post','normal' ); // Author Metabox
 }
   add_action('admin_menu','remove_default_post_screen_metaboxes');


// REMOVE META BOXES FROM DEFAULT PAGES SCREEN
   function remove_default_page_screen_metaboxes() {
 remove_meta_box( 'postcustom','page','normal' ); // Custom Fields Metabox
 remove_meta_box( 'postexcerpt','page','normal' ); // Excerpt Metabox
 remove_meta_box( 'commentstatusdiv','page','normal' ); // Comments Metabox
 remove_meta_box( 'trackbacksdiv','page','normal' ); // Talkback Metabox
 remove_meta_box( 'slugdiv','page','normal' ); // Slug Metabox
 remove_meta_box( 'authordiv','page','normal' ); // Author Metabox
 }
   add_action('admin_menu','remove_default_page_screen_metaboxes');

4
इस wordpress.stackexchange.com/questions/34030/… के अनुसार, मैं इस तरह से slugdiv को नहीं छिपाऊंगा, लेकिन इसके बजाय gist.github.com/1863830 का उपयोग करें

@CorvanNoorloos आपका गिटब लिंक टूट गया है।
user7003859

48

"वर्डप्रेस" को "वर्डप्रेस" फ़िल्टर पर निकालें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

वर्डप्रेस संस्करण 3.0 के साथ एक फिल्टर जोड़ा गया था जो स्वचालित रूप से "वर्डप्रेस" (कोई पूंजी पी) के सभी उदाहरणों को "वर्डप्रेस" (एक राजधानी पी के साथ) पोस्ट सामग्री, पोस्ट शीर्षक और टिप्पणी पाठ में कनवर्ट करता है। कुछ लोग इसे घुसपैठ के रूप में देखते हैं, मुझे बस समय-समय पर वर्डप्रेस को मिस-केस करने की आवश्यकता है और फ़िल्टर को कुछ हद तक परेशान पाया।

// Remove annoying P filter
if(function_exists('capital_P_dangit')) {
    foreach ( array( 'the_content', 'the_title' ) as $filter ) 
        remove_filter( $filter, 'capital_P_dangit', 11 ); 

    remove_filter('comment_text', 'capital_P_dangit', 31 );
}

बहुत कम मिला। उन चीजों में से एक है जो सिर्फ एक और कोड का टुकड़ा निकालता है जिसकी जरूरत नहीं है
NetConstructor.com

5
वर्डप्रेस 3.0.1 में, यह फ़िल्टर प्राथमिकता 11 के साथ जोड़ा गया है , इसलिए आपको 11इसे निकालने के लिए तीसरे पैरामीटर के रूप में जोड़ना होगा।
Jan Fabry

46

डैशबोर्ड को कस्टमाइज़ करें

add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');

function my_custom_dashboard_widgets() {
   global $wp_meta_boxes;

इन डैशबोर्ड विजेट को निकालें ...

   unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
   unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
   unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);

'सहायता और समर्थन' नामक एक कस्टम विजेट जोड़ें

   wp_add_dashboard_widget('custom_help_widget', 'Help and Support', 'custom_dashboard_help');
}

यह आपके कस्टम विजेट के लिए सामग्री है

 function custom_dashboard_help() {
    echo '<p>Lorum ipsum delor sit amet et nunc</p>';
}

44

कस्टम उपयोगकर्ता प्रोफ़ाइल फ़ील्ड जोड़ें

कस्टम उपयोगकर्ता प्रोफ़ाइल फ़ील्ड जोड़ने के लिए नीचे दिए गए कोड को अपने functions.php फ़ाइल में रखें। जैसा कि आप फिट देखते हैं लाइनों को संपादित करें या जोड़ें।

लाइन को हटाने के लिए नहीं याद रखें: $ contactmethods लौटें; अन्यथा यह काम नहीं करेगा।

// CUSTOM USER PROFILE FIELDS
   function my_custom_userfields( $contactmethods ) {

    // ADD CONTACT CUSTOM FIELDS
    $contactmethods['contact_phone_office']     = 'Office Phone';
    $contactmethods['contact_phone_mobile']     = 'Mobile Phone';
    $contactmethods['contact_office_fax']       = 'Office Fax';

    // ADD ADDRESS CUSTOM FIELDS
    $contactmethods['address_line_1']       = 'Address Line 1';
    $contactmethods['address_line_2']       = 'Address Line 2 (optional)';
    $contactmethods['address_city']         = 'City';
    $contactmethods['address_state']        = 'State';
    $contactmethods['address_zipcode']      = 'Zipcode';
    return $contactmethods;
   }
   add_filter('user_contactmethods','my_custom_userfields',10,1);

कस्टम फ़ील्ड प्रदर्शित करने के लिए आप नीचे सूचीबद्ध दो विधियों में से एक का उपयोग कर सकते हैं।

विकल्प 1:

the_author_meta('facebook', $current_author->ID)

विकल्प 2:

<?php $current_author = get_userdata(get_query_var('author')); ?>
<p><a href="<?php echo esc_url($current_author->contact_phone_office);?>" title="office_phone"> Office Phone</a></p>

41

व्यवस्थापक मेनू के आदेश को अनुकूलित करें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

यह कोड आपको व्यवस्थापक मेनू में तत्वों के क्रम को पुनर्गठित करने की अनुमति देगा। आपको बस इतना करना है कि व्यवस्थापक मेनू में एक मौजूदा लिंक पर क्लिक करें और / wp-admin / URL से पहले सब कुछ कॉपी करें। नीचे दिए गए आदेश नए व्यवस्थापक मेनू के आदेश का प्रतिनिधित्व करते हैं।

// CUSTOMIZE ADMIN MENU ORDER
   function custom_menu_order($menu_ord) {
       if (!$menu_ord) return true;
       return array(
        'index.php', // this represents the dashboard link
        'edit.php?post_type=events', // this is a custom post type menu
        'edit.php?post_type=news', 
        'edit.php?post_type=articles', 
        'edit.php?post_type=faqs', 
        'edit.php?post_type=mentors',
        'edit.php?post_type=testimonials',
        'edit.php?post_type=services',
        'edit.php?post_type=page', // this is the default page menu
        'edit.php', // this is the default POST admin menu 
    );
   }
   add_filter('custom_menu_order', 'custom_menu_order');
   add_filter('menu_order', 'custom_menu_order');

क्या वास्तव में कोई कोर फ़िल्टर नाम है custom_menu_order? मुझे एक नहीं मिला ...
kaiser


40

Exerpt की लंबाई बदलने का कार्य

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

डिफ़ॉल्ट रूप से सभी अंश 55 शब्दों में कैप किए गए हैं। नीचे दिए गए कोड का उपयोग करने से आप इस डिफ़ॉल्ट सेटिंग को ओवरराइड कर सकते हैं:

function new_excerpt_length($length) { 
    return 100;
}

add_filter('excerpt_length', 'new_excerpt_length');

यह उदाहरण अंश लंबाई को 100 शब्दों में बदलता है, लेकिन आप इसे किसी भी मान में बदलने के लिए उसी विधि का उपयोग कर सकते हैं।


@ user402 ... क्या यह टोपी शब्दों या वर्णों से है? क्या आप पोस्ट कर सकते हैं कि दोनों कैसे करें?
NetConstructor.com

3
@ NetConstructor.com शब्दों द्वारा यह फ़ंक्शन (और excerpt_lengthहुक) कैप
एमान

हे। मुझे वह फिल्टर कोर में मिला। :)
डगल कैम्पबेल

38

प्रबंधित पोस्ट / पृष्ठ सूची में थंबनेल जोड़ें

आप पोस्ट / पेज को प्रबंधित करें / संपादित करें और थंबनेल पूर्वावलोकन के साथ एक नया कॉलम सूची में प्रदर्शित करने के लिए इसे अपने कार्यों में जोड़ सकते हैं।

/****** Add Thumbnails in Manage Posts/Pages List ******/
if ( !function_exists('AddThumbColumn') && function_exists('add_theme_support') ) {

    // for post and page
    add_theme_support('post-thumbnails', array( 'post', 'page' ) );

    function AddThumbColumn($cols) {

        $cols['thumbnail'] = __('Thumbnail');

        return $cols;
    }

    function AddThumbValue($column_name, $post_id) {

            $width = (int) 35;
            $height = (int) 35;

            if ( 'thumbnail' == $column_name ) {
                // thumbnail of WP 2.9
                $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
                // image from gallery
                $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
                if ($thumbnail_id)
                    $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
                elseif ($attachments) {
                    foreach ( $attachments as $attachment_id => $attachment ) {
                        $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
                    }
                }
                    if ( isset($thumb) && $thumb ) {
                        echo $thumb;
                    } else {
                        echo __('None');
                    }
            }
    }

    // for posts
    add_filter( 'manage_posts_columns', 'AddThumbColumn' );
    add_action( 'manage_posts_custom_column', 'AddThumbValue', 10, 2 );

    // for pages
    add_filter( 'manage_pages_columns', 'AddThumbColumn' );
    add_action( 'manage_pages_custom_column', 'AddThumbValue', 10, 2 );
}

स्तंभ को बाईं ओर कैसे ले जाएं?
रिच

38

अपने ब्लॉग में पिंग निकालें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

//remove pings to self
function no_self_ping( &$links ) {
    $home = get_option( 'home' );
    foreach ( $links as $l => $link )
        if ( 0 === strpos( $link, $home ) )
            unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );

कितनी बार और कब वर्डप्रेस खुद को पिंग करता है?
NetConstructor.com

मेरे पास वास्तव में वह मुद्दा काफी बार है। यदि मैं अपने WP ब्लॉग पर किसी अन्य पोस्ट के लिए एक आंतरिक लिंक का संदर्भ देता हूं, तो मुझे खुद से एक ट्रैकबैक या पिंगबैक (याद नहीं है जो) मिलता है। यह खीझ दिलाने वाला है।
सहस कट्टा

मुझे भी। मेरे पास एक समाचार / पत्रिका ब्लॉग है और अन्य लेखों के लिए लिंक अक्सर।
स्टीवन

35

GZIP आउटपुट कंप्रेशन को सक्षम करें

आम तौर पर सर्वर को स्वचालित रूप से ऐसा करने के लिए सेट किया जाना चाहिए, लेकिन बहुत सारे साझा होस्ट डॉन टी ऐसा नहीं करते हैं (संभवतः क्लाइंट बैंडविड्थ उपयोग बढ़ाने के लिए)

 if(extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler"))
   add_action('wp', create_function('', '@ob_end_clean();@ini_set("zlib.output_compression", 1);'));

32

डीबी क्वेरी, टाइम स्पेंट और मेमोरी खपत प्रदर्शित करें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

function performance( $visible = false ) {

    $stat = sprintf(  '%d queries in %.3f seconds, using %.2fMB memory',
        get_num_queries(),
        timer_stop( 0, 3 ),
        memory_get_peak_usage() / 1024 / 1024
        );

    echo $visible ? $stat : "<!-- {$stat} -->" ;
}

फिर ऊपर दिए गए कोड के नीचे यह कोड जो स्वचालित रूप से आपकी सार्वजनिक वेबसाइट के पाद लेख में ऊपर कोड डालेगा (सुनिश्चित करें कि आपका विषय wp_footer कह रहा है):

add_action( 'wp_footer', 'performance', 20 );

कई बार कहा जा सकता है।


php के लिए <5.2 उपयोगmemory_get_usage()
onetrickpony

31

Unregister WP Default Widgets

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

// unregister all default WP Widgets
function unregister_default_wp_widgets() {
    unregister_widget('WP_Widget_Pages');
    unregister_widget('WP_Widget_Calendar');
    unregister_widget('WP_Widget_Archives');
    unregister_widget('WP_Widget_Links');
    unregister_widget('WP_Widget_Meta');
    unregister_widget('WP_Widget_Search');
    unregister_widget('WP_Widget_Text');
    unregister_widget('WP_Widget_Categories');
    unregister_widget('WP_Widget_Recent_Posts');
    unregister_widget('WP_Widget_Recent_Comments');
    unregister_widget('WP_Widget_RSS');
    unregister_widget('WP_Widget_Tag_Cloud');
}
add_action('widgets_init', 'unregister_default_wp_widgets', 1);

मैंने इसका उपयोग संस्करण 3.1.4 पर किया है। लेकिन विगेट्स अभी भी वहाँ हैं। किसी एक विचार है?
14:39 पर user391

अभी भी WP 4.5 पर काम करता है :)
टिम मेलोन

30

ऑटो पोस्ट सामग्री से पहली छवि निकालें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

यह कोड स्वचालित रूप से किसी पोस्ट से जुड़ी पहली छवि को निकालेगा और आपको getImage फ़ंक्शन को कॉल करके प्रदर्शित / उपयोग करने की अनुमति देगा।

// AUTOMATICALLY EXTRACT THE FIRST IMAGE FROM THE POST 
function getImage($num) {
    global $more;
    $more = 1;
    $link = get_permalink();
    $content = get_the_content();
    $count = substr_count($content, '<img');
    $start = 0;
    for($i=1;$i<=$count;$i++) {
        $imgBeg = strpos($content, '<img', $start);
        $post = substr($content, $imgBeg);
        $imgEnd = strpos($post, '>');
        $postOutput = substr($post, 0, $imgEnd+1);
        $postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
        $image[$i] = $postOutput;
        $start=$imgEnd+1;
    }
    if(stristr($image[$num],'<img')) { echo '<a href="'.$link.'">'.$image[$num]."</a>"; }
    $more = 0;
}

6
अच्छा है, लेकिन get_the_image इसके साथ बहुत अच्छा काम करता है। wordpress.org/extend/plugins/get-the-image
artlung

सही है, लेकिन यह अलग तरीके से काम करता है और विभिन्न मुद्दों को ठीक करता है जो get_the_image को ध्यान में नहीं रखते हैं
NetConstructor.com

3
यह get_the_image स्क्रिप्ट से अलग क्या करता है?
मैट

1
@matt - वर्डप्रेस में अलग-अलग तरीके होते हैं जिससे पोस्ट में इमेजेस को जोड़ा जा सकता है और मुझे लगता है कि get_the_image स्क्रिप्ट बस उन्हीं में से एक है। यह देखने के लिए जांचता है कि क्या कोई चित्रित छवि है और वह पहले उपयोग करता है यदि उपलब्ध है, तो मुझे लगता है कि यह पोस्ट सामग्री में जोड़ी गई पहली छवि के लिए जांच करता है और यदि यह नहीं पाया जाता है, तो उच्चतम छवि के साथ छवि के लिए मीडिया गैलरी की जांच करता है आदेश (कम से कम मुझे कैसे याद है कि आदेश जा रहा है)।
NetConstructor.com

मैं सुझाव देता हूं कि wordpress.org/extend/plugins/auto-post-thumbnail स्वचालित रूप से पोस्ट थंबनेल या किसी भी कस्टम पोस्ट प्रकार में पहली छवि से पोस्ट थंबनेल (विशेष रूप से थंबनेल) उत्पन्न करें अगर पोस्ट थंबनेल सेट नहीं है
nsal Korkmaz

27

आउटपुट जो थीम टेम्पलेट पोस्ट / पेज को हेडर में उपयोग कर रहा है

add_action('wp_head', 'show_template');
function show_template() {
    global $template;
    print_r($template);
}

यदि आपका थीम post_class का उपयोग कर रहा है तो डिफ़ॉल्ट DIV आउटपुट को छोटा करें।

अगर आपका विषय कुछ उपयोग कर रहा है

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

आप अपने स्रोत में लंबे समय तक पागल हो सकते हैं जो इस तरह या उससे भी लंबे समय तक दिख सकता है:

<div id="post-4" class="post-4 post type-post hentry category-uncategorized category-test category-test-1-billion category-test2 category-test3 category-testing"> 

यह वास्तव में आपके स्रोत को अव्यवस्थित करना शुरू कर सकता है और ज्यादातर मामलों में अनावश्यक प्रतीत होता है, 3-4 गहराई तक जाना काफी अच्छा है।

शीर्ष उदाहरण के लिए हम आउटपुट को इस तरह से काट सकते हैं:

// slice crazy long div outputs
    function category_id_class($classes) {
        global $post;
        foreach((get_the_category($post->ID)) as $category)
            $classes[] = $category->category_nicename;
            return array_slice($classes, 0,5);
    }
    add_filter('post_class', 'category_id_class');

यह आउटपुट को केवल पहले 5 मानों में शामिल करता है, इसलिए उपरोक्त उदाहरण बन जाता है:

<div id="post-4" class="post-4 post type-post hentry category-uncategorized"> 

श्रेणी अभिलेखों को पोस्ट प्रकार की परवाह किए बिना सभी पोस्ट प्रदर्शित करें: कस्टम पोस्ट प्रकारों के लिए अच्छा है

function any_ptype_on_cat($request) {
 if ( isset($request['category_name']) )
  $request['post_type'] = 'any';

 return $request;
}
add_filter('request', 'any_ptype_on_cat');

अवांछित डैशबोर्ड आइटम निकालें

यह पहले से ही पोस्ट किया गया था, लेकिन इसमें आइटमों की पूरी सूची नहीं थी। विशेष रूप से उन कष्टप्रद "आने वाली लिंक!"

add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');

function my_custom_dashboard_widgets() {
global $wp_meta_boxes;
 //Right Now - Comments, Posts, Pages at a glance
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
//Recent Comments
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
//Incoming Links
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
//Plugins - Popular, New and Recently updated Wordpress Plugins
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);

//Wordpress Development Blog Feed
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
//Other Wordpress News Feed
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
//Quick Press Form
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
//Recent Drafts List
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
}

निकालें "और पढ़ें" पृष्ठ कूदता है **

इसके बजाय पृष्ठ के शीर्ष पर वापस जाएँ। आप जानते हैं कि जब आप "अधिक पढ़ें" पर क्लिक करते हैं तो यह पृष्ठ में उस स्थान पर कूद जाएगा जो कष्टप्रद हो सकता है, इससे यह पृष्ठ को सामान्य रूप से लोड होता है, कोई कूद नहीं सकता!

function remove_more_jump_link($link) { 
$offset = strpos($link, '#more-');
if ($offset) {
$end = strpos($link, '"',$offset);
}
if ($end) {
$link = substr_replace($link, '', $offset, $end-$offset);
}
return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

उपयोगकर्ता नाम पर आधारित ADMIN मेनू आइटम को प्रतिबंधित करें , उपयोगकर्ता के वास्तविक नाम के साथ उपयोगकर्ता नाम बदलें।

function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_login == 'username')
    {
        $restricted = array(__('Posts'),
                            __('Media'),
                            __('Links'),
                            __('Pages'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Users'),
                            __('Tools'),
                            __('Settings')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }// end while

    }// end if
}
add_action('admin_menu', 'remove_menus');

// वैकल्पिक रूप से आप उपयोग कर सकते हैं ($ current_user-> user_login! = 'admin') के बजाय, शायद अधिक उपयोगी

टैग क्लाउड को स्टाइल करें

//tag cloud custom
add_filter('widget_tag_cloud_args','style_tags');
function style_tags($args) {
$args = array(
     'largest'    => '10',
     'smallest'   => '10',
     'format'     => 'list',
     );
return $args;
}

यहां विकल्पों का पूरा संदर्भ (बहुत कुछ है!) Http://codex.wordpress.org/Function_Reference/wp_tag_cloud

डिफ़ॉल्ट आरएसएस विजेट अपडेट टाइमर बदलें

(डिफ़ॉल्ट 6 या 12 घंटे मैं भूल जाता हूं (1800 = 30 मिनट)।

add_filter( 'wp_feed_cache_transient_lifetime', create_function('$fixrss', 'return 1800;') );

क्या आप कृपया अगले कुछ हफ्तों में इनमें से प्रत्येक को अलग जवाब में विभाजित कर सकते हैं। मैं इसे आपके लिए करने जा रहा था, लेकिन यह नहीं बताना चाहता था कि मैं आपके उत्तरों का श्रेय ले रहा हूं। किसी भी मामले में - मैं इसे व्यवस्थित रखने की कोशिश कर रहा हूं ताकि उपयोगकर्ता आसानी से उस जानकारी को पा सकें जो वे खोज रहे हैं। अग्रिम धन्यवाद
NetConstructor.com

मैं केवल उपयोगकर्ता नाम पर आधारित "प्रतिबंधित ADMIN मेनू आइटम कोड का उपयोग कर रहा था, उपयोगकर्ता नाम को एक वास्तविक उपयोगकर्ता के नाम के साथ बदलें" जो बहुत अच्छा है लेकिन क्या आप कोड को अपडेट करने के लिए यह भी बता सकते हैं कि यह एक विशिष्ट "उपयोगकर्ता भूमिका" के लिए कैसे किया जा सकता है। मुझे लगता है कि यह बहुत उपयोगी होगा!
NetConstructor.com

क्षमा करें NetConstructor मैंने अभी आपकी टिप्पणी देखी। उपयोगकर्ता भूमिका के लिए मैं "current_user_can" का उपयोग करूंगा। मेरे पास इसका परीक्षण करने का समय नहीं है लेकिन जब मैं ऐसा करूंगा, मैं इसे जोड़ दूंगा।
व्येक

wp_feed_cache_transient_lifetime का डिफ़ॉल्ट मान 43200 (12 घंटे) है
ब्रासोफिलो

26

केवल प्लग इन के लिए प्लगिन अपडेट नोटिस निकालें

function update_active_plugins($value = '') {
    /*
    The $value array passed in contains the list of plugins with time
    marks when the last time the groups was checked for version match
    The $value->reponse node contains an array of the items that are
    out of date. This response node is use by the 'Plugins' menu
    for example to indicate there are updates. Also on the actual
    plugins listing to provide the yellow box below a given plugin
    to indicate action is needed by the user.
    */
    if ((isset($value->response)) && (count($value->response))) {

        // Get the list cut current active plugins
        $active_plugins = get_option('active_plugins');    
        if ($active_plugins) {

            //  Here we start to compare the $value->response
            //  items checking each against the active plugins list.
            foreach($value->response as $plugin_idx => $plugin_item) {

                // If the response item is not an active plugin then remove it.
                // This will prevent WordPress from indicating the plugin needs update actions.
                if (!in_array($plugin_idx, $active_plugins))
                    unset($value->response[$plugin_idx]);
            }
        }
        else {
             // If no active plugins then ignore the inactive out of date ones.
            foreach($value->response as $plugin_idx => $plugin_item) {
                unset($value->response);
            }          
        }
    }  
    return $value;
}
add_filter('transient_update_plugins', 'update_active_plugins');    // Hook for 2.8.+
//add_filter( 'option_update_plugins', 'update_active_plugins');    // Hook for 2.7.x

1
यह जरूरी नहीं कि एक अच्छा विचार है - एक निष्क्रिय प्लगइन अभी भी फाइलसिस्टम में मौजूद है, और एक असुरक्षित अभी भी साइट को हैक करने के लिए उपयोग किया जा सकता है। प्लगइन्स को हमेशा अप-टू-डेट रखा जाना चाहिए।
टिम मेलोन

25

<head>टैग के भीतर शानदार जानकारी और HTML निकालें

// remove unnecessary header info
add_action( 'init', 'remove_header_info' );
function remove_header_info() {
    remove_action( 'wp_head', 'rsd_link' );
    remove_action( 'wp_head', 'wlwmanifest_link' );
    remove_action( 'wp_head', 'wp_generator' );
    remove_action( 'wp_head', 'start_post_rel_link' );
    remove_action( 'wp_head', 'index_rel_link' );
    remove_action( 'wp_head', 'adjacent_posts_rel_link' );         // for WordPress < 3.0
    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' ); // for WordPress >= 3.0
}

// remove extra CSS that 'Recent Comments' widget injects
add_action( 'widgets_init', 'remove_recent_comments_style' );
function remove_recent_comments_style() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array(
        $wp_widget_factory->widgets['WP_Widget_Recent_Comments'],
        'recent_comments_style'
    ) );
}

23

लाइव साइटों पर उपयोग करने के लिए डिबगिंग और लॉगिंग को सक्षम करें

यह एक कोड है जिसे मैंने WP_DEBUG स्थिरांक का उपयोग करने के लिए लिखा था जो सामान्य रूप से डिफ़ॉल्ट रूप से अक्षम हैं। वैसे मैंने WP_DEBUG को न केवल सक्षम करने का एक तरीका बनाया है ताकि आप इसे किसी नकारात्मक साइड-इफ़ेक्ट वाले लाइव साइट पर उपयोग कर सकें, लेकिन मैंने अन्य डिबगिंग कॉन्स्टेंट का उपयोग भी त्रुटियों को प्रदर्शित करने के लिए, और लॉग फ़ाइल बनाने के लिए किया। / wp-content निर्देशिका में त्रुटियाँ और नोटिस।

इस कोड को अपनी wp-config.php फ़ाइल में छोड़ें (जब आप CASE में एक बैकस्ट जप को छोड़ दें) और फिर आप अपनी साइट पर किसी भी यूआरएल के अंत में डिबग = 1, 2, या 3 पैरामीटर पास कर सकते हैं।

? डिबग = 1 = सभी त्रुटियों / सूचनाओं को दिखाता है? डिबग = 2 = उन्हें प्रदर्शित करने के लिए मजबूर करता है? डिबग = 3 = / डीपी-सामग्री डीआईआर में सभी त्रुटियों का एक डिबग.लॉग फ़ाइल बनाता है।

/**
* Written by Jared Williams - http://new2wp.com
* @wp-config.php replace WP_DEBUG constant with this code
* Enable WP debugging for usage on a live site
* http://core.trac.wordpress.org/browser/trunk/wp-includes/load.php#L230
* Pass the '?debug=#' parameter at the end of any url on site
*
* http://example.com/?debug=1, /?debug=2, /?debug=3
*/
if ( isset($_GET['debug']) && $_GET['debug'] == '1' ) {
    // enable the reporting of notices during development - E_ALL
    define('WP_DEBUG', true);
} elseif ( isset($_GET['debug']) && $_GET['debug'] == '2' ) {
    // must be true for WP_DEBUG_DISPLAY to work
    define('WP_DEBUG', true);
    // force the display of errors
    define('WP_DEBUG_DISPLAY', true);
} elseif ( isset($_GET['debug']) && $_GET['debug'] == '3' ) {
    // must be true for WP_DEBUG_LOG to work
    define('WP_DEBUG', true);
    // log errors to debug.log in the wp-content directory
    define('WP_DEBUG_LOG', true);
}

यदि आप रुचि रखते हैं, तो मैंने कॉमलुव के लिए लिखी गई अतिथि पोस्ट पर और विस्तार से जाना: http://comluv.com/dev/enable-debugging-and-logging-for-live-site-usage/

मैं अभी भी इसे सुरक्षित बनाने के लिए एक तरह से काम कर रहा हूं, या अधिमानतः किसी तरह यह काम कर सकता है अगर (current_user_can ('manage_themes') और is_logged_in ()।

लेकिन यह वह जगह है जहाँ यह बहुत मुश्किल हो जाता है।


हम सेटअप लाइव, स्टेजिंग और देव डेटाबेस कनेक्शन विवरण के समान कुछ का उपयोग करते हैं।
टॉम

20

सार्वजनिक पृष्ठ पर स्वचालित रूप से डायनामिक शीर्षक जोड़ें

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

नीचे दिए गए कोड का उपयोग स्वचालित रूप से सार्वजनिक रूप से देखे जाने वाले पृष्ठों / पदों के आधार पर गतिशील पृष्ठ शीर्षक बनाएगा।

/* Dynamic Titles **/
// This sets your <title> depending on what page you're on, for better formatting and for SEO
// You need to set the variable $longd to some custom text at the beginning of the function
function dynamictitles() {
$longd = __('Enter your longdescription here.', 'texdomainstring');
    if ( is_single() ) {
      wp_title('');
      echo ' | '.get_bloginfo('name');

} else if ( is_page() || is_paged() ) {
      bloginfo('name');
      wp_title('|');

} else if ( is_author() ) {
      bloginfo('name');
      wp_title(' | '.__('Author', 'texdomainstring'));

} else if ( is_category() ) {
      bloginfo('name');
      wp_title(' | '.__('Archive for', 'texdomainstring'));

} else if ( is_tag() ) {
      echo get_bloginfo('name').' | '.__('Tag archive for', 'texdomainstring');
      wp_title('');

} else if ( is_archive() ) {
      echo get_bloginfo('name').' | '.__('Archive for', 'texdomainstring');
      wp_title('');

} else if ( is_search() ) {
      echo get_bloginfo('name').' | '.__('Search Results', 'texdomainstring');
} else if ( is_404() ) {
      echo get_bloginfo('name').' | '.__('404 Error (Page Not Found)', 'texdomainstring');

} else if ( is_home() ) {
      echo get_bloginfo('name').' | '.get_bloginfo('description');

} else {
      echo get_bloginfo('name').' | '.($blog_longd);
}
}

20

नई भूमिकाएँ और क्षमताएं - केवल एक बार चलती हैं!

मैं इनको संभाल कर रखता हूं, बिना प्लगइन के इन्हें करने का यही सही तरीका है। वे विकल्प डेटाबेस में एक एकल फ़ील्ड (उपसर्ग_सुपर_रोल्स) सेट करते हैं, और आपको उन्हें सेट करने के लिए प्लगइन की आवश्यकता नहीं होती है। क्या उपलब्ध हैं और क्या करते हैं, इसके लिए विवरणों की एक सूची के लिए कोडेक्स पेज देखें। आपको इनमें से किसी एक ब्लॉक को अनइंस्टॉल करना होगा, किसी भी पेज को लोड करना होगा और फिर उन्हें फिर से कमेंट करना होगा! यहाँ मैं एक भूमिका बना रहा हूँ जो मुझे मिली क्षमताओं की आवश्यकता है:

/* Capabilities */

// To add the new role, using 'international' as the short name and
// 'International Blogger' as the displayed name in the User list and edit page:
/*
add_role('international', 'International Blogger', array(
    'read' => true, // True allows that capability, False specifically removes it.
    'edit_posts' => true,
    'delete_posts' => true,
    'edit_published_posts' => true,
    'publish_posts' => true,
    'edit_files' => true,
    'import' => true,
    'upload_files' => true //last in array needs no comma!
));
*/


// To remove one outright or remove one of the defaults:
/* 
remove_role('international');
*/

कभी-कभी किसी को हटाने और पुन: जोड़ने के बजाय मौजूदा भूमिका से जोड़ना / हटाना आसान होता है। फिर से, आपको केवल इसे अनइंस्टॉल करने की जरूरत है, एक पृष्ठ को फिर से लोड करें और फिर से टिप्पणी करें। यह विकल्प तालिका में भूमिका / क्षमता को ठीक से संग्रहीत करेगा। (यह आपको अनुमति देता है, डेवलपर उन्हें नियंत्रित करने और भारी प्लगइन्स के ओवरहेड को हटा देता है जो एक ही काम करते हैं।) यहां मैं उनकी प्रकाशित पोस्ट (डिफ़ॉल्ट) को हटाने के लिए लेखक की भूमिका बदल रहा हूं, लेकिन उन्हें संपादित करने की क्षमता की अनुमति देता है उनकी प्रकाशित पोस्ट (जो डिफ़ॉल्ट रूप से इस भूमिका के लिए संभव नहीं है) - * add_cap * या * remove_cap * का उपयोग करके।

/*
$edit_role = get_role('author');
   $edit_role->add_cap('edit_published_posts');
   $edit_role->remove_cap('delete_published_posts');
*/

मैं उन साइटों के लिए कोडेक्स पृष्ठ से ग्रिड के साथ एक स्प्रेडशीट रखता हूं जो इस तरह से संशोधित करते हैं, इसलिए मैं याद रख सकता हूं कि चीजें कैसे सेट की जाती हैं, हालांकि आपके कार्यों में टिप्पणी कोड को छोड़कर। एफपी फ़ाइल काम करेगी। इन उदाहरणों को अधूरा मत छोड़ो, या यह प्रत्येक पृष्ठ लोड के साथ डेटाबेस को लिख देगा!


ऊपर जिन कार्यों का उल्लेख करता हूं, वे विकल्प डेटाबेस में एक फ़ील्ड में लिखते हैं। टिप्पणी करना और उन्हें अनसुना करना उनके जाने का तरीका है। उपयोगकर्ता भूमिकाओं के लिए प्लगइन्स हैं, लेकिन यदि आप उपर्युक्त फ़ंक्शन का उपयोग करते हैं, तो आप इन कार्यों को नहीं छोड़ सकते, और आपको उन्हें एक से अधिक बार सेट करने की आवश्यकता नहीं है, या यदि कोई विशिष्ट उपयोगकर्ता कुछ एक्सेस कर रहा है तो उसके आधार पर उन्हें सेट करना होगा। यदि आप ऐसा चाहते हैं, तो उस उपयोगकर्ता को एक विशिष्ट, अद्वितीय भूमिका के साथ सेट करें। और कोडेक्स का संदर्भ लें, जो कुछ मैं ऊपर लिखता हूं वह 100% सही है यदि आप इसे बिना प्लगइन के करते हैं। लगभग हर मामले के लिए, आपको केवल एक बार उपयोगकर्ता भूमिकाएँ निर्धारित करनी होंगी।
tomcat23 8

@ tomcat23: वर्णन करने के लिए, मैंने इसे केवल एक भूमिका जोड़ने के लिए एक फ़ंक्शन में लपेट दिया, जब यह पहले से मौजूद नहीं है। एक और नोट: मुझे लगता है कि भूमिका पदानुक्रम में कहीं न कहीं भूमिका निभाना आसान होगा, कुछ भूमिका में निर्मित कैप से फिर से प्राप्त करना और फिर अंतर्निहित भूमिका से क्षमताओं को जोड़ना / हटाना। यदि यह पूर्व के बीच कहीं रखा जाता है तो यह याद रखना अधिक स्पष्ट और आसान बना देगा। व्यवस्थापक और संपादक। - मुझे आशा है कि आपको कोई आपत्ति नहीं है कि मैंने आपका उत्तर संपादित कर दिया है। यदि आप करते हैं, pls इसे वापस भूमिका। :)
केसर

1
@ tomcat23 - इस बिंदु पर पुल के नीचे पानी। मैं बस इतना ही कह रहा हूं, मुझे दोष देने में कोई दिलचस्पी नहीं है, बस सभी को आगे बढ़ने के लिए शांति है। :)
माइकस्किंकेल

2
@ मायकेसिंकेल हां, आप सही हैं। अगर मैंने आपका अपमान किया है तो @kaiser मेरी क्षमा याचना।
tomcat23

1
@ मायकेसिंकल: शांति वापस लाने के लिए धन्यवाद। @ tomcat23: नहीं, आपने नहीं किया। मैं उस तरह की आलोचना से निपट सकता हूं। मेरी माफ़ी भी।
kaiser

19

Wordpress कस्टम व्यवस्थापक पाद

// व्यवस्थापक पाद लेख को अनुकूलित करें
समारोह custom_admin_footer () {
        गूंज 'अपने कस्टम पाद लेख पाठ और HTML यहाँ जोड़ें';
} 
add_filter ('admin_footer_text', 'custom_admin_footer');

मैं इसे क्लाइंट साइटों के लिए संदर्भ के एक साधारण बिंदु के रूप में मुझे देव के रूप में संपर्क करने के लिए उपयोग करता हूं।


19

विजेट में शॉर्टकोड सक्षम करें

// shortcode in widgets
if ( !is_admin() ){
    add_filter('widget_text', 'do_shortcode', 11);
}

18

RSS फ़ीड्स को अक्षम करने का कार्य

पर परीक्षण किया गया: वर्डप्रेस 3.0.1

आप RSS फ़ीड्स को अक्षम कर सकते हैं यदि आप अपनी Wordpress आधारित वेबसाइट को स्थिर बनाए रखना चाहते हैं।

आप इस फ़ंक्शन का उपयोग कर सकते हैं:

function fb_disable_feed() {
wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') );
}

add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);

स्रोत: bueltge.de/wordpress-feeds-deaktivieren/794 (फ्रैंक Bueltge)
FUXIA

धन्यवाद Toscho! स्रोत अंग्रेजी में भी उपलब्ध है wpengineer.com/287/disable-wordpress-feed
bueltge

16

"Howdy" संदेश को "Welcome" में बदलें

इस फ़ंक्शन के साथ आप अपने व्यवस्थापक क्षेत्र के शीर्ष दाईं ओर "हाउडी" संदेश को अनुकूलित कर सकते हैं।
यह फ़ंक्शन "हाउडी" संदेश को "वेलकम" में बदलने के लिए JQuery का उपयोग करता है।

/****** Customize admin message "Howdy" to "Welcome" ******/
$nohowdy = "Welcome";

if (is_admin()) {
    add_action('init', 'artdev_nohowdy_h');
    add_action('admin_footer', 'artdev_nohowdy_f');
}
// Load jQuery
function artdev_nohowdy_h() {
    wp_enqueue_script('jquery');
}
// Modify
function artdev_nohowdy_f() {
global $nohowdy;
echo <<<JS
<script type="text/javascript">
//<![CDATA[
var nohowdy = "$nohowdy";
jQuery('#user_info p')
    .html(
    jQuery('#user_info p')
        .html()
        .replace(/Howdy/,nohowdy)
    );
//]]>
JS;
}

gettextफ़िल्टर का उपयोग करके PHP संस्करण :

add_filter('gettext', 'change_howdy', 10, 3);

function change_howdy($translated, $text, $domain) {

    if (!is_admin() || 'default' != $domain)
        return $translated;

    if (false !== strpos($translated, 'Howdy'))
        return str_replace('Howdy', 'Welcome', $translated);

    return $translated;
}

3
क्या यह पहले से ही PHP की तरफ संपादित नहीं किया जा सकता है, इसलिए इसका आउटपुट बिल्कुल नहीं मिलता है?
हकरे

यह 3.0+ संस्करणों में यहाँ ठीक काम कर रहा है, लेकिन पुराने संस्करणों में क्यों नहीं? जांचें कि क्या आपके द्वारा उपयोग किया जाने वाला कोई अन्य प्लगइन इसके लिए जिम्मेदार है। यहाँ पाठ JQuery, शायद JQuery प्लगइन के साथ बदल दिया गया है?
फिलिप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.