Как создать плагин Wordpress для другого плагина Wordpress?

Я всегда делаю изменения на плагинах Wordpress для клиентов. Но эти изменения всегда в опасности, чтобы быть потерянными, если плагин обновляется.

Есть ли существует способ сделать плагин для другого плагина в Wordpress? Есть ли существует способ сохранить изменения или повторно применить его после каждого сменного обновления.

6
12.03.2012, 13:37
3 ответа

Я думаю лучший способ сделать, это через действия и фильтры, как мы расширяем само ядро WordPress.

Другие опции похожи на @helgatheviking, на который указывают, если плагин является классом, можно расширить его.

К сожалению, не все сменные разработчики предоставляют полезным фильтрам и действиям с их кодом, чаще всего плагин не записан способом ООП. Только способ сохранить Ваши модификации на сменном обновлении, состоит в том, чтобы создать копию исходного плагина, изменить сменное имя. Я обычно настоящее имя префикса, например. Mamaduka Twitter Connect, но с этим решением необходимо будет вручную обновить код исходного плагина.

Если Вы думаете, что плагину нужно больше фильтров/действия, можно связаться с автором и попросить, чтобы он включал те рычаги в ядро.

4
19.02.2020, 22:05
  • 1
    , я просто получил другую безумную идею, действительно ли возможно знать, когда плагин закончен, обновив, и затем перепишите старые файлы, которые я возвратил в сменную папку? также, любой пример при расширении сменного класса в другом плагине. спасибо, которое часть –  alhoseany 12.03.2012, 14:59
  • 2
    Если Вы переписываете все те файлы назад, то обновление теряет его значение, также это может повредить плагин, если автор сделал некоторые изменения в этом файлы, и они используются некоторые другие места. Не может помнить ни одного из них прямо сейчас, но в целом это может быть сделано. –  Mamaduka 12.03.2012, 15:08
  • 3
    я могу только переписать файлы, которые я добавляю к плагинам, как шаблоны, например –  alhoseany 13.03.2012, 11:46

Один простой путь состоял бы в том, чтобы определить пользовательские рычаги в Вашем плагине, на который можно сцепиться. Встроенная система рычагов позволяет, чтобы Вы создали свои собственные рычаги и затем связали на них как нормальные рычаги Wordpress. Кодекс Wordpress имеет яркие примеры и объяснения функции do_action и как можно использовать его для создания пользовательских рычагов. Серьезно пропущенная функция в Wordpress плагином и разработчиками темы.

Я - твердый сторонник, что система рычагов - все, что необходимо разработать плагины, которые могут быть расширены другими плагинами, но поскольку я сказал серьезно пропущенный 90% всех разработчиков Wordpress.

Посмотрите ниже для примера (взятый из предоставленной ссылки Кодекса Wordpress):

<?php 
# ======= Somewhere in a (mu-)plugin, theme or the core ======= #

/**
 * You can have as many arguments as you want,
 * but your callback function and the add_action call need to agree in number of arguments.
 * Note: `add_action` above has 2 and 'i_am_hook' accepts 2. 
 * You will find action hooks like these in a lot of themes & plugins and in many place @core
 * @see: http://codex.wordpress.org/Plugin_API/Action_Reference
 */

// Define the arguments for the action hook
$a = array(
     'eye patch' => 'yes'
    ,'parrot' => true
    ,'wooden leg' => (int) 1
);
$b = 'And hook said: "I ate ice cream with peter pan."'; 

// Defines the action hook named 'i_am_hook'
do_action( 'i_am_hook', $a, $b );

# ======= inside for eg. your functions.php file ======= #

/**
 * Define callback function
 * Inside this function you can do whatever you can imagine
 * with the variables that are loaded in the do_action() call above.
 */
function who_is_hook( $a, $b )
{
    echo '<code>';
        print_r( $a ); // `print_r` the array data inside the 1st argument
    echo '</code>';

    echo '<br />'.$b; // echo linebreak and value of 2nd argument
} 
// then add it to the action hook, matching the defined number (2) of arguments in do_action
// see [http://codex.wordpress.org/Function_Reference/add_action] in the Codex 

// add_action( $tag, $function_to_add, $priority, $accepted_args );
add_action( 'i_am_hook', 'who_is_hook', 10, 2 );  

# ======= output that you see in the browser ======= #

Array ( 
    ['eye patch'] => 'yes'
    ['parrot'] => true
    ['wooden leg'] => 1
) 
And hook said: "I ate ice cream with peter pan."
3
19.02.2020, 22:05
  • 1
    +1 для взятия Кодекса do_action пример :) –  kaiser 12.03.2012, 16:37

FWIW, можно увеличить число версии модуля так, чтобы это не делало автоматического обновления. в то время как не лучшее решение, это решит непосредственную проблему. Вы могли также изменить именование и имена файлов так, чтобы они больше не были "тем же" плагином.

1
19.02.2020, 22:05