Nano Hash - криптовалюты, майнинг, программирование

Внешнее добавление функции в файл PHP плагина WordPress (что позволяет легко обновлять версию)

У меня есть настоящая щекотка для мозга, с которой я боролся пару дней.

Я создаю веб-сайт WordPress для кого-то (по адресу http://www.lydiala.com/) и с помощью Простого плагина корзины покупок Paypal для WordPress.

Я хочу отображать общее количество товаров в корзине в правом верхнем углу моего файла header.php.

Я придумал функцию, которая успешно возвращает эту цифру, и добавил ее в основной PHP-файл плагина по адресу /wp-content/plugins/wordpress-simple-paypal-shopping-cart/wp_shopping_cart.php (наряду со всеми другими функциями).

Я взял следующую СУЩЕСТВУЮЩУЮ функцию в wp_shopping_cart.php:

function simple_cart_total() {  
    $grand_total = 0;   
    foreach ((array)$_SESSION['simpleCart'] as $item){      
        $total += $item['price'] * $item['quantity'];       
        $item_total_shipping += $item['shipping'] * $item['quantity'];  
    }   
    $grand_total = $total + $item_total_shipping;
    return number_format($grand_total,2); 
}

Затем я скопировал его, переименовал и изменил следующим образом:

function total_items() {    
    $grand_total = 0;   
    foreach ((array)$_SESSION['simpleCart'] as $item){      
         $total += $item['quantity'];   
    }
$grand_total = $total;  
    return number_format($grand_total); 
}

Теперь в моем header.php у меня есть:

echo total_items();

Который отлично работает!

НО, когда плагин будет обновляться в будущем, эта недавно добавленная функция будет потеряна, когда wp_shopping_cart.php будет перезаписан новой версией.

Есть ли способ добавить мою пользовательскую функцию в этот внешний файл .php? Я уже испробовал несколько методов, но большинство из них не работают, потому что они пытаются загрузить wp_shopping_cart.php, который уже загружен ("Не удается повторно объявить" и т. д.).

В худшем случае я всегда могу попросить клиента позвонить мне, когда будут доступны обновления этого плагина.

12.06.2013

  • Вы пробовали один из плагинов, который позволяет вам включать пользовательские функции? justin.ag/technology/wordpress-plugins/ 12.06.2013
  • просто не помещайте функцию в файл плагина;) 12.06.2013

Ответы:


1

Я бы порекомендовал добавить это в другой плагин.

paypall-totals.php в вашем wp-content/plugins (не забудьте активировать в wp-admin)

/*
plugin-name: paypall totals
description: adds a function to show paypall totals
pluginURI: http://stackoverflow.com/q/17066291/933065
*/

function paypall_total_items() { 
  session_start();   
  $grand_total = 0;   
  foreach ((array)$_SESSION['simpleCart'] as $item){      
    $total += $item['quantity'];   
  }
  $grand_total = $total;  
  return number_format($grand_total); 
}

Поскольку он только получает данные $_SESSION, не имеет значения, где вы поместите эту функцию. Это также будет работать в вашей теме functions.php

Также откорректируйте код в header.php: echo paypall_total_items();

Просто восстановите исходный код плагина PayPal.

Дай мне знать.

12.06.2013
  • УРА!!! янв FTW! Ты удивительный. Это работает потрясающе. И с вашей помощью я только что написал свой первый плагин для WP!! Это прекрасное чувство. Большое спасибо, чувак. Н.Б. - Сначала плагин не отображался в wp-admin, поэтому я сделал пару дополнений в шапке (примерно так): /* Название плагина: WP PayPal Item Total Plugin URI: URI_Of_Page_Describing_Plugin_and_Updates Описание: добавляет функцию для отображения итогов PayPal Версия: 1.0 Автор: я URI автора: URI_Of_The_Plugin_Author Лицензия: GPL2 */ 12.06.2013
  • Если мой ответ решил вашу проблему, примите мой ответ, так работает stackoverflow. PS подробнее о создании плагинов: codex.wordpress.org/Writing_a_Plugin 12.06.2013

  • 2

    извините, я не могу комментировать сейчас, должен разделить на временный ответ.
    Я думаю, что вам не следует писать плагин, вы должны поместить этот код в свою тему function.php.
    и проверить, если плагин " Простой плагин корзины покупок PayPal для WordPress». были установлены или нет по следующему коду:

    if (function_exists ("simple_cart_total")) {...}
    
    12.06.2013
  • хм, просто поместите эту функцию в свою тему, не нужно разбивать на новый плагин, потому что на самом деле только ваша тема должна использовать эту функцию :) 16.06.2013
  • верно, но здесь я посоветовал плагин, чтобы сохранить структуру четкой 16.06.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..