Como editar ou substituir uma função principal?

4

Eu quero adicionar um argumento de dados aos links gerados pela função paginate_links() . Então, eu posso estender mais facilmente minha paginação personalizada para usar AJAX.

Tanto quanto eu posso dizer, esta função não é conectável, nem tem ganchos disponíveis.

Os links gerados por paginate_links() são assim:

<a class="page-numbers" href="https://example.com/list/page/2/"><span class="screen-reader-text">Page </span>2</a>

Eu quero adicionar o argumento da página de dados à tag <a> para que fique assim:

<a data-page="2" class="page-numbers" href="https://example.com/list/page/2/"><span class="screen-reader-text">Page </span>2</a>

Qual seria a melhor maneira de editar uma função Core WordPress que não é conectável?

    
por Swen 14.12.2016 / 15:57

1 resposta

3

Não há filtro, mas você pode definir o argumento type como array quando chamar paginate_links() e, em seguida, executar um filtro na matriz retornada.

Exemplo:

$links = array_map(
    function( $link ) {
        if ( FALSE === strpos( $link, '/page/' ) )
            return str_replace( '<a ', '<a data-page="1" ', $link );

        return preg_replace(
            '~<a (.*)/page/(\d+)~',
            '<a data-page="\2" \1/page/\2',
            $link
        );
    },
    paginate_links( [ 'type' => 'array' ] )
);

print join( ' | ', $links );
    
por fuxia 14.12.2016 / 16:31