Переопределить функцию плагина - PullRequest
0 голосов
/ 04 сентября 2018

Я использую плагин WP Jobs с дополнительным Крайним сроком приложения WP Jobs, и есть функция, которую мне нужно изменить:

    public function display_the_deadline() {
    global $post;

    $deadline = get_post_meta( $post->ID, '_application_deadline', true );
    $expiring = false;
    $expired  = false;
    $date_str = null;

    if ( $deadline ) {
        $expiring_days = apply_filters( 'job_manager_application_deadline_expiring_days', 2 );
        $expiring      = ( floor( ( current_time( 'timestamp' ) - strtotime( $deadline ) ) / ( 60 * 60 * 24 ) ) >= -$expiring_days );
        $expired       = ( floor( ( current_time( 'timestamp' ) - strtotime( $deadline ) ) / ( 60 * 60 * 24 ) ) >= 0 );
        $date_str      = date_i18n( $this->get_date_format(), strtotime( $deadline ) );
    }

    // Do not display anything if listing is already expired.
    if ( is_singular( 'job_listing' ) && $expired ) {
        return;
    }

    $timestamp = strtotime( $deadline );

    /**
     * Filters the display string for the application closing date.
     *
     * @since 1.2.1
     *
     * @param string $date_str  The default date string to be displayed.
     * @param string $timestamp The timestamp of the closing date.
     */
    $date_str = apply_filters( 'job_manager_application_deadline_closing_date_display', $date_str, $timestamp );

    if ( $date_str ) {
        echo '<li class="application-deadline ' . ( $expiring ? 'expiring' : '' ) . ' ' . ( $expired ? 'expired' : '' ) . '"><label>' . ( $expired ? __( 'Closed', 'wp-job-manager-application-deadline' ) : __( 'Closes', 'wp-job-manager-application-deadline' ) ) . ':</label> ' . $date_str . '</li>';
    }
}

В разделе, который повторяет "li class =" application-deadline ... ", мне нужно изменить Closes: на Deadline: и мне интересно, можно ли переопределить эту функцию в моем файле functions.php. Я пытался заменить его с помощью Jquery, но это не сработало.

1 Ответ

0 голосов
/ 04 сентября 2018

К сожалению, нет отличного способа отфильтровать существующие функции в плагинах, если они не разработаны таким образом - и, похоже, эта функция не настроена для этого.

Использование JavaScript должно абсолютно работать. Поскольку ваш HTML-вывод выглядит примерно так:

<li class="application-deadline expiring"><label>Closes:</label> Sept 4th, 2018</li>

Вы должны быть в состоянии выбрать элемент довольно легко. Взгляните на этот ванильный фрагмент JS:

let deadlines = document.querySelectorAll('.application-deadline');

for( i = 0, n = deadlines.length; i < n; ++i ){
  deadlines[i].innerText = deadlines[i].innerText.replace('Closes:', 'Deadline:');
}
<li class="application-deadline expiring"><label>Closes:</label> Sept 4th, 2018</li>

Или, если хотите, версия jQuery:

jQuery(document).ready(function($){
  $('.application-deadline').each(function(){
    $(this).text( $(this).text().replace('Closes:', 'Deadline:') );
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="application-deadline expiring"><label>Closes:</label> Sept 4th, 2018</li>

Редактировать: Похоже, ваш контент загружается динамически с Ajax. Вы можете попытаться использовать $. AjaxComplete для обработки кода:

jQuery(document).ajaxComplete( function( event, request, settings){
  $('.application-deadline').each(function(){
    $(this).text( $(this).text().replace('Closes:', 'Deadline:') );
  });
});

В качестве альтернативы вы можете использовать псевдоэлементы CSS для манипулирования текстом:

.job_listing-location.job-end label {
    font-size: 0;
}

.job_listing-location.job-end label:before {
    content: "Deadline:";
    font-size: 16px;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...