WooCommerce: добавление имен классов к элементам нумерации страниц - PullRequest
1 голос
/ 01 марта 2020

Чтобы использовать классы Boostrap 4, я хочу добавить некоторые имена классов в нумерацию страниц WooCommerce. К сожалению, я не смог найти способ сделать это.

Я проверил pagination.php. Это дает мне следующий код:

$total   = isset( $total ) ? $total : wc_get_loop_prop( 'total_pages' );
$current = isset( $current ) ? $current : wc_get_loop_prop( 'current_page' );
$base    = isset( $base ) ? $base : esc_url_raw( str_replace( 999999999, '%#%', remove_query_arg( 'add-to-cart', get_pagenum_link( 999999999, false ) ) ) );
$format  = isset( $format ) ? $format : '';

if ( $total <= 1 ) {
    return;
}
?>
<nav class="woocommerce-pagination">
    <?php
        echo paginate_links( apply_filters( 'woocommerce_pagination_args', array( // WPCS: XSS ok.
            'base'         => $base,
            'format'       => $format,
            'add_args'     => false,
            'current'      => max( 1, $current ),
            'total'        => $total,
            'prev_text'    => '&larr;',
            'next_text'    => '&rarr;',
            'type'         => 'list',
            'end_size'     => 3,
            'mid_size'     => 3,
        ) ) );
    ?>
</nav>

Но вывод выглядит примерно так:

<nav class="woocommerce-pagination">
    <ul class="page-numbers">
        <li><span aria-current="page" class="page-numbers current">1</span></li>
        <li><a class="page-numbers" href="/link/">2</a></li>
        <li><a class="page-numbers" href="/link/">3</a></li>
        <li><a class="page-numbers" href="/link/">4</a></li>
        <li><a class="page-numbers" href="/link/">5</a></li>
        <li><a class="next page-numbers" href="/link/">&rarr;</a></li>
    </ul>
</nav>

Как видите, класс page-numbers не является частью paginate_links массив. Так что, думаю, я не смог изменить его в файле.

Есть ли какой-нибудь хук, который я могу использовать для добавления классов к элементу <ul>, <li> и <a>?

Это структура, которую я пытаюсь воспроизвести (Bootstrap 4):

<nav aria-label="Page navigation example">
  <ul class="pagination">
    <li class="page-item"><a class="page-link" href="#">Previous</a></li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item"><a class="page-link" href="#">Next</a></li>
  </ul>
</nav>

1 Ответ

1 голос
/ 01 марта 2020

То, что вы ищете, находится в следующем файле

https://github.com/WordPress/WordPress/blob/master/wp-includes/general-template.php#L4081

https://github.com/WordPress/WordPress/blob/master/wp-includes/general-template.php#L4239

Give Попробуйте таким образом, измените

<?php
    echo paginate_links( apply_filters( 'woocommerce_pagination_args', array( // WPCS: XSS ok.
        'base'         => $base,
        'format'       => $format,
        'add_args'     => false,
        'current'      => max( 1, $current ),
        'total'        => $total,
        'prev_text'    => '&larr;',
        'next_text'    => '&rarr;',
        'type'         => 'list',
        'end_size'     => 3,
        'mid_size'     => 3,
    ) ) );
?>

на

<?php   
    $paginate_links =  paginate_links( apply_filters( 'woocommerce_pagination_args', array(
        'base'         => $base,
        'format'       => $format,
        'add_args'     => false,
        'current'      => max( 1, $current ),
        'total'        => $total,
        'prev_text'    => '&larr;',
        'next_text'    => '&rarr;',
        'type'         => 'array',
        'end_size'     => 3,
        'mid_size'     => 3,
    ) ) );


    if (is_array($paginate_links)) {
    ?>
        <ul class="pagination">
            <?php 

            foreach ($paginate_links as $paginate_link) { ?>

                <li class="page-item"><?php echo wp_kses_post($paginate_link) ?></li>

            <?php
            } ?>

        </ul>
    <?php
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...