Eklenti önekinin benzersizliğini nasıl kontrol edebilirim?


11

Diğer eklentilerle çarpışmaları önlemek için, tüm global işlevlerin, eylemlerin ve eklentilerin benzersiz bir önekle öneklenmesi gerekir, örneğin:

function xyz_function_name() { ... }

Soru, xyzbunun gerçekten benzersiz olduğunu nasıl doğrulayabilirim ? Örneğin, wpseo_diğer SEO eklentisinin de kolayca kullanabileceğini hayal edebileceğim Yoast SEO kullanır . Mevcut WordPress eklentilerini potansiyel çarpışmalar için aramanın en iyi yolu nedir? Yoksa var mı?


4
Ön ekler geçmişte kaldı. Günümüzde ad alanları kullanıyoruz ve bunları ihtiyacınız olduğu kadar derin iç içe yerleştirebilirsiniz.
fuxia

Soruyu, global olan ve sınıflar kullanılarak önek olarak eklenemeyen eylemleri ve filtreleri içerecek şekilde güncelleyeceğim.
Borek Bernard

bu güncellemeyle, bu çok iyi bir soru
prosti

1
Buna ben oy verdim çünkü cevabın zor olacağını düşünüyorum. Ama bunun gereksiz olduğunu düşünmüyorum çünkü potansiyel olarak sonsuz sayıda önek ve işlev adı kombinasyonu var. Bence gerçek çözüm fonksiyon isminde daha ayrıntılı olmaktır. Ayrıca ve belki de aşırıya kaçabilir, ancak bir postfix eklenebilir.
stims

Yanıtlar:


5

Tüm eklentilerin en son sürümünü WordPress.org deposundan indirmek için Mark Jaquith'in WordPres Eklenti Dizini Slurper kabuk komut dosyasını kullanabilirsiniz . Eklentiler indirildikten sonra, kontrol etmek istediğiniz eklenti / kanca öneki için grep yapabilirsiniz, örneğin:

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

WordPres Eklenti Dizini Slurper paketini belge kökünüze açın. Varsayılan dizin adıdır WordPress-Plugin-Directory-Slurperve şunları içerir:

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

Dizin php updateiçinden yürüterek bash betiğini çalıştırın WordPress-Plugin-Directory-Slurper. Sıkıştırılmış eklentiler indirilecek /zipsve ayıklanacak /plugins. Reponun tamamı 15GB civarında bir yerdedir ve ilk kez indirilmesi birkaç saat sürecektir.

updateKomut dosyasının içeriği :

#!/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";

En son onaylanan temaların tümünü indirmek istiyorsanız, bunun için bir komut dosyası vardır: Aaron Jorbin tarafından yazılmış WordPress Tema Dizini Slurper .

Bu kabuk komut dosyaları bir Unix sistemi için tasarlanmıştır. Windows kullanıyorsanız, cygwin kullanarak Plugin / Theme Directory Slurper komut dosyalarını çalıştırabilirsiniz.


0
  1. jenerik olma, adınızın bazı varyasyonlarını kullanın.
  2. Yeni eklentileri kuran kimse artık PHP 5.2 kullanmıyor (ekim 2016), sadece PHP ad alanını kullan ve eklenti adı gibi uzun ama alakalı bir şey yap.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.