Как добавить плагины в тему WordPress?

2 сент. 2011 г., 08:35:03
Просмотры: 19K
Голосов: 6

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

1
Комментарии

возможный дубликат Добавление плагинов в тему Wordpress

Chip Bennett Chip Bennett
2 сент. 2011 г. 15:40:22
Все ответы на вопрос 2
2

Вы всегда можете включить файлы плагинов в ваш файл темы functions.php. Конечно, следует организовать их в разумную структуру, чтобы избежать перегруженности темы файлами и кодом :).

Вы можете использовать код, подобный этому (используется в теме Carrington), чтобы загрузить все плагины, находящиеся в папке "plugin" внутри папки вашей темы...

/**
 * Загрузка плагинов темы
 * 
**/
function cfct_load_plugins() {
    $files = cfct_files(CFCT_PATH.'plugins');
    if (count($files)) {
        foreach ($files as $file) {
            if (file_exists(CFCT_PATH.'plugins/'.$file)) {
                include_once(CFCT_PATH.'plugins/'.$file);
            }
// поддержка дочерней темы
            if (file_exists(STYLESHEETPATH.'/plugins/'.$file)) {
                include_once(STYLESHEETPATH.'/plugins/'.$file);
            }
        }
    }
}

/**
 * Получить список php-файлов в указанном пути, а также файлы в соответствующих дочерних темах
 * 
 * @param string $path Путь к директории для поиска
 * @return array Файлы в указанной директории
 * 
**/
function cfct_files($path) {
    $files = apply_filters('cfct_files_'.$path, false);
    if ($files) {
        return $files;
    }
    $files = wp_cache_get('cfct_files_'.$path, 'cfct');
    if ($files) {
        return $files;
    }
    $files = array();
    $paths = array($path);
    if (STYLESHEETPATH.'/' != CFCT_PATH) {
        // загрузка файлов дочерней темы
        $paths[] = STYLESHEETPATH.'/'.str_replace(CFCT_PATH, '', $path);
    }
    foreach ($paths as $path) {
        if (is_dir($path) && $handle = opendir($path)) {
            while (false !== ($file = readdir($handle))) {
                $path = trailingslashit($path);
                if (is_file($path.$file) && strtolower(substr($file, -4, 4)) == ".php") {
                    $files[] = $file;
                }
            }
            closedir($handle);
        }
    }
    $files = array_unique($files);
    wp_cache_set('cfct_files_'.$path, $files, 'cfct', 3600);
    return $files;
}

...затем вы используете функцию cfct_load_plugins(); во время инициализации темы.

2 сент. 2011 г. 10:35:47
Комментарии

"во время инициализации темы" <- как это сделать?

Anh-Thi DINH Anh-Thi DINH
16 февр. 2019 г. 13:47:42

@Anh-ThiDINH Я предлагаю использовать хук after_setup_theme https://codex.wordpress.org/Plugin_API/Action_Reference/after_setup_theme

Ján Bočínec Ján Bočínec
21 февр. 2019 г. 12:15:32
0

Самое простое решение — просто использовать обычные плагины WordPress ^^. Создание собственной системы плагинов для вашей темы совершенно излишне, делает тему более перегруженной и увеличивает затраты на разработку и поддержку. В данном случае побеждает принцип KISS (Keep It Simple, Stupid — не усложняй).
С уважением,
Хай

Ещё один момент, который стоит учитывать при замене плагинов собственными решениями, — это обновления. Многие обновления плагинов выпускаются для устранения уязвимостей безопасности или исправления проблем, вызванных обновлениями WordPress.

2 сент. 2011 г. 09:22:53