प्लगइन उपसर्ग की विशिष्टता की जांच कैसे करें?


11

अन्य प्लगइन्स के साथ टकराव से बचने के लिए, सभी को एक अद्वितीय उपसर्ग के साथ सभी वैश्विक कार्यों, कार्यों और प्लगइन्स को उपसर्ग करना चाहिए, जैसे:

function xyz_function_name() { ... }

सवाल यह है कि मैं कैसे सत्यापित करूं कि xyzवास्तव में अद्वितीय है? उदाहरण के लिए, Yoast SEO का उपयोग करता है wpseo_जिसकी मैं कल्पना कर सकता हूँ अन्य SEO प्लगइन भी आसानी से उपयोग कर सकते हैं। संभावित टकरावों के लिए उपलब्ध वर्डप्रेस प्लगइन्स को खोजने का सबसे अच्छा तरीका क्या है? या है?


4
उपसर्ग अतीत की बात है। आजकल हम नेमस्पेस का उपयोग करते हैं, और आप उन लोगों को घोंसले में डाल सकते हैं जिनकी आपको आवश्यकता है।
FUXIA

मैं क्रियाओं और फ़िल्टर को शामिल करने के लिए प्रश्न को अपडेट करूंगा जो वैश्विक हैं और कक्षाओं का उपयोग करके उपसर्ग नहीं किया जा सकता है।
बोरिक बर्नार्ड

उस अद्यतन के साथ, यह एक बहुत अच्छा सवाल है
prosti

1
मैंने इसे वोट दिया क्योंकि मुझे लगता है कि इसका जवाब कठिन है। लेकिन मैं वास्तव में यह नहीं सोचता कि यह उपसर्ग है क्योंकि संभावित रूप से उपसर्गों और फ़ंक्शन नामों के संयोजन की एक अनंत संख्या है। मुझे लगता है कि वास्तविक समाधान फ़ंक्शन नाम में अधिक विस्तृत होना है। इसके अलावा, और शायद overkill, लेकिन एक उपसर्ग जोड़ा जा सकता है।
21

जवाबों:


5

आप WordPress.org रेपो से सभी प्लगइन्स के सबसे हाल के संस्करण को डाउनलोड करने के लिए मार्क जैक्विथ द्वारा WordPres प्लगइन निर्देशिका स्लॉपर शेल स्क्रिप्ट का उपयोग कर सकते हैं । एक बार प्लगइन्स डाउनलोड हो जाने के बाद, आप उस प्लगइन / हुक उपसर्ग के लिए grep कर सकते हैं जिसे आप चेक करना चाहते हैं, जैसे:

grep -r --include=*.php 'wpseo_' ./

अपने दस्तावेज़ रूट में WordPres प्लगइन निर्देशिका स्लॉपर पैकेज को अनज़िप करें। डिफ़ॉल्ट निर्देशिका नाम है WordPress-Plugin-Directory-Slurperऔर इसमें निम्न शामिल हैं:

  /plugins/
  /readmes/
  /zips/
  LICENSE
  README.markdown
  update

निर्देशिका के php updateभीतर से निष्पादित करके बैश स्क्रिप्ट चलाएँ WordPress-Plugin-Directory-Slurper। ज़िप किए गए प्लग इन को डाउनलोड किया जाएगा /zipsऔर उन्हें निकाला जाएगा /plugins। पूरा रेपो 15GB के आसपास है और पहली बार डाउनलोड करने में कई घंटे लगेंगे।

updateस्क्रिप्ट की सामग्री :

#!/usr/bin/php
<?php
$args = $argv;
$cmd = array_shift( $args );

$type = 'all';
if ( !empty( $args[0] ) ) {
    $type = $args[0];
}

switch ( $type ) {
    case 'readme':
        $directory = 'readmes';
        $download = 'readmes/%s.readme';
        $url = 'http://plugins.svn.wordpress.org/%s/trunk/readme.txt';
        break;
    case 'all':
        $directory = 'plugins';
        $download = 'zips/%s.zip';
        $url = 'http://downloads.wordpress.org/plugin/%s.latest-stable.zip?nostats=1';
        break;
    default:
        echo $cmd . ": invalid command\r\n";
        echo 'Usage: php ' . $cmd . " [command]\r\n\r\n";
        echo "Available commands:\r\n";
        echo "  all - Downloads full plugin zips\r\n";
        echo "  readme - Downloads plugin readmes only\r\n";
        die();
}

echo "Determining most recent SVN revision...\r\n";
try {
    $changelog = @file_get_contents( 'http://plugins.trac.wordpress.org/log/?format=changelog&stop_rev=HEAD' );
    if ( !$changelog )
        throw new Exception( 'Could not fetch the SVN changelog' );
    preg_match( '#\[([0-9]+)\]#', $changelog, $matches );
    if ( !$matches[1] )
        throw new Exception( 'Could not determine most recent revision.' );
} catch ( Exception $e ) {
    die( $e->getMessage() . "\r\n" );
}
$svn_last_revision = (int) $matches[1];
echo "Most recent SVN revision: " . $svn_last_revision . "\r\n";
if ( file_exists( $directory . '/.last-revision' ) ) {
    $last_revision = (int) file_get_contents( $directory . '/.last-revision' );
    echo "Last synced revision: " . $last_revision . "\r\n";
} else {
    $last_revision = false;
    echo "You have not yet performed a successful sync. Settle in. This will take a while.\r\n";
}

$start_time = time();

if ( $last_revision != $svn_last_revision ) {
    if ( $last_revision ) {
        $changelog_url = sprintf( 'http://plugins.trac.wordpress.org/log/?verbose=on&mode=follow_copy&format=changelog&rev=%d&limit=%d', $svn_last_revision, $svn_last_revision - $last_revision );
        $changes = file_get_contents( $changelog_url );
        preg_match_all( '#^' . "\t" . '*\* ([^/A-Z ]+)[ /].* \((added|modified|deleted|moved|copied)\)' . "\n" . '#m', $changes, $matches );
        $plugins = array_unique( $matches[1] );
    } else {
        $plugins = file_get_contents( 'http://svn.wp-plugins.org/' );
        preg_match_all( '#<li><a href="([^/]+)/">([^/]+)/</a></li>#', $plugins, $matches );
        $plugins = $matches[1];
    }

    foreach ( $plugins as $plugin ) {
        $plugin = urldecode( $plugin );
        echo "Updating " . $plugin;

        $output = null; $return = null;
        exec( 'wget -q -np -O ' . escapeshellarg( sprintf($download, $plugin) ) . ' ' . escapeshellarg( sprintf($url, $plugin) ) . ' > /dev/null', $output, $return );

        if ( $return === 0 && file_exists( sprintf($download, $plugin) ) ) {
            if ($type === 'all') {
                if ( file_exists( 'plugins/' . $plugin ) )
                    exec( 'rm -rf ' . escapeshellarg( 'plugins/' . $plugin ) );

                exec( 'unzip -o -d plugins ' . escapeshellarg( 'zips/' . $plugin . '.zip' ) );
                exec( 'rm -rf ' . escapeshellarg( 'zips/' . $plugin . '.zip' ) );
            }
        } else {
            echo '... download failed.';
        }
        echo "\r\n";
    }

    if ( file_put_contents( $directory . '/.last-revision', $svn_last_revision ) )
        echo "[CLEANUP] Updated $directory/.last-revision to " . $svn_last_revision . "\r\n";
    else
        echo "[ERROR] Could not update $directory/.last-revision to " . $svn_last_revision . "\r\n";
}

$end_time = time();
$minutes = ( $end_time - $start_time ) / 60;
$seconds = ( $end_time - $start_time ) % 60;

echo "[SUCCESS] Done updating plugins!\r\n";
echo "It took " . number_format($minutes) . " minute" . ( $minutes == 1 ? '' : 's' ) . " and " . $seconds . " second" . ( $seconds == 1 ? '' : 's' ) . " to update ". count($plugins)  ." plugin" . ( count($plugins) == 1 ? '' : 's') . "\r\n";
echo "[DONE]\r\n";

यदि आप सबसे हाल ही में स्वीकृत थीम डाउनलोड करना चाहते हैं, तो उसके लिए भी एक स्क्रिप्ट है: वर्डप्रेस थीम डायरेक्टरी स्लॉपर आरोन जोर्बिन द्वारा।

ये शेल स्क्रिप्ट यूनिक्स प्रणाली के लिए डिज़ाइन की गई हैं। यदि आप Windows का उपयोग कर रहे हैं, तो आप cygwin का उपयोग करके Plugin / Theme Directory Slurper स्क्रिप्ट चला सकते हैं।


0
  1. सामान्य मत बनो, अपने नाम की कुछ भिन्नता का उपयोग करें।
  2. नया प्लगइन्स इंस्टॉल करने वाला कोई भी व्यक्ति PHP 5.2 का उपयोग नहीं करता है (अक्टूबर 2016), बस PHP नामस्थान का उपयोग करें, और इसे प्लगइन नाम की तरह कुछ लंबा लेकिन प्रासंगिक बनाएं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.