Вызов функции из плагина Wordpress

У меня есть плагин wordpress, который я хочу вызвать одной из функций в пользовательском шаблоне. Функция, которую я хочу вызвать, это get_ship_now_adjust_date_link.

Можно ли просто сделать следующее в шаблоне:

echo get_ship_now_adjust_date_link( $subscription['id'] );

Вот полный код плагинов:

<?php
namespace Javorszky\Toolbox;

add_filter( 'wcs_view_subscription_actions', __NAMESPACE__ . '\\add_ship_reschedule_action', 10, 2 );
add_action( 'wp_loaded', __NAMESPACE__ . '\\handle_ship_now_adjust_date_request' );

/**
 * Extra actions on the subscription. Only there if the subscription is active.
 *
 * @param array             $actions        existing actions on the subscription
 * @param \WC_Subscription   $subscription    the subscription we're adding new actions to
 * @return array            $actions
 */
function add_ship_reschedule_action( $actions, $subscription ) {
    $next_timestamp = $subscription->get_time( 'next_payment' );

    if ( 0 != $next_timestamp && 'active' == $subscription->get_status() ) {

        $new_actions = array(
            'ship_now_recalculate' => array(
                'url' => get_ship_now_adjust_date_link( $subscription ),
                'name' => Utilities\replace_key_dates( Utilities\get_button_text( 'ship_reschedule_button_text', 'Ship now and recalculate from today' ), $subscription ),
            ),
        );

        $actions = array_merge( $actions, $new_actions );
    }

    return $actions;
}

/**
 * URL to be used on the "Ship now and adjust the date" button.
 *
 * @param  \WC_Subscription  $subscription   Subscription we're getting the link for
 * @return string                           URL to trigger shipping now and keeping the date with
 */
function get_ship_now_adjust_date_link( $subscription ) {
    if ( version_compare( \WC_Subscriptions::$version, '2.6.0', '>=' ) ) {
        $completed_payments = $subscription->get_payment_count('completed');
    } else {
        $completed_payments  = $subscription->get_completed_payment_count();
    }

    $action_link = Utilities\strip_custom_query_args();
    $action_link = add_query_arg( array( 'subscription_id' => $subscription->get_id(), 'ship_now_adjust_date' => 1 ), $action_link );
    $action_link = wp_nonce_url( $action_link, $subscription->get_id() . '_completed_adjust_' . $completed_payments );

    return $action_link;
}

/**
 * Hooked into `wp_loaded`, this is responsible for charging the subscription now and adjusting the date if certain
 * GET variables are present.
 */
function handle_ship_now_adjust_date_request() {
    if ( isset( $_GET['ship_now_adjust_date'] ) && isset( $_GET['subscription_id'] ) && isset( $_GET['_wpnonce'] ) && !isset( $_GET['wc-ajax'] )  ) {
        $user_id      = get_current_user_id();
        $subscription = wcs_get_subscription( $_GET['subscription_id'] );
        $nonce        = $_GET['_wpnonce'];


        if ( Utilities\Process\process_ship_now_adjust_date( $user_id, $subscription, $nonce ) ) {
            wc_add_notice( _x( 'Your order has been placed!', 'Notice after ship now adjust date request succeeded.', 'jg-toolbox' ) );
            wp_safe_redirect( wc_get_endpoint_url( 'view-subscription', $subscription->get_id(), wc_get_page_permalink( 'myaccount' ) ) );
            exit;
        }
    }
}

Не передавая только идентификатор — функция делает что-то вроде $subscription->get_id(), поэтому вам нужно будет передать правильный экземпляр подписки.

CBroe 16.12.2020 12:40

Похоже, у вас есть пространство имен в этом файле, поэтому вызов функции должен сначала включать пространство имен.

Diego 16.12.2020 12:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
136
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуй использовать \Javorszky\Toolbox\get_ship_now_adjust_date_link

Ударь в темноте.

greybeard 16.12.2020 13:07

Пожалуйста, добавьте некоторое объяснение к вашему ответу, чтобы другие могли извлечь из него уроки.

Nico Haase 16.12.2020 16:31

Другие вопросы по теме