为了账号安全,请及时绑定邮箱和手机立即绑定

从 span 标签 HTML DOM 替换类

从 span 标签 HTML DOM 替换类

PHP
白板的微信 2023-04-28 15:24:25
我正在尝试在 HTML 类中替换和添加一些值...我在某种程度上成功地解决了这个问题,但现在我需要帮助。这是我的功能代码function wpse247219_custom_pagination() {    global $the_query;    $big = 999999999; // need an unlikely integer    $pages = paginate_links( array(        'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),        'format' => '?paged=%#%',        'current' => max( 1, get_query_var('page') ),        'total' => $the_query->max_num_pages,        'prev_next' => false,        'type'  => 'array',        'prev_next'   => true,        'prev_text'    => __( 'Previous', 'text-domain' ),        'next_text'    => __( 'Next page', 'text-domain'),    ) );    $output = '';    if ( is_array( $pages ) ) {        $paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var( 'paged' );        $output .=  '<ul class="pagination-list">';        foreach ( $pages as $page ) {            $output .= "<li>$page</li>";        }        $output .= '</ul>';        $dom = new \DOMDocument();        $dom->loadHTML( mb_convert_encoding( $output, 'HTML-ENTITIES', 'UTF-8' ) );        $xpath = new \DOMXpath( $dom );        $page_numbers = $xpath->query( "//*[contains(concat(' ', normalize-space(@class), ' '), ' page-numbers ')]" );        foreach ( $page_numbers as $page_numbers_item ) {            $page_numbers_item_classes = explode( ' ', $page_numbers_item->attributes->item(0)->value );            if ( in_array( 'current', $page_numbers_item_classes ) ) {                          $list_item_attr_class = $dom->createAttribute( 'class' );                $list_item_attr_class->value = 'mynewclass';                $page_numbers_item->parentNode->appendChild( $list_item_attr_class );            }现在我还想替换<span class="page-numbers current">to的类<span class="pagination-link is-current "> ,使其看起来像这样我还试图<li></li>从下一页和上一页按钮中删除标签。任何类型的帮助将不胜感激
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

在对我的代码进行一些实验后,我解决了我的问题。这是我的代码...


function wpse247219_custom_pagination() {

    global $the_query;

    $big = 999999999; // need an unlikely integer

    $pages = paginate_links( array(

        'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),

        'format' => '?paged=%#%',

        'current' => max( 1, get_query_var('page') ),

        'total' => $the_query->max_num_pages,

        'prev_next' => false,

        'type'  => 'array',

        'prev_next'   => true,

        'prev_text'    => __( 'Previous', 'text-domain' ),

        'next_text'    => __( 'Next page', 'text-domain'),

    ) );

    $output = '';


    if ( is_array( $pages ) ) {

        $paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var( 'paged' );

        $size = count($pages)-1;

        $output .=  '<ul class="pagination-list">';

        $i = 0;

        foreach ( $pages as $page ) {

            if($i < 1 || $i == $size){

                $output .= "$page";

            }else{

                $output .= "<li>$page</li>";

            }

              $i++;  

        }

        $i = 0;

        $output .= '</ul>';

        $dom = new \DOMDocument();

        $dom->loadHTML( mb_convert_encoding( $output, 'HTML-ENTITIES', 'UTF-8' ) );

        $xpath = new \DOMXpath( $dom );

        $page_numbers = $xpath->query( "//*[contains(concat(' ', normalize-space(@class), ' '), ' page-numbers ')]" );

        foreach ( $page_numbers as $page_numbers_item ) {

            $page_numbers_item_classes = explode( ' ', $page_numbers_item->attributes->item(0)->value );

            if ( in_array( 'current', $page_numbers_item_classes ) ) {          

                $list_item_attr_class = $dom->createAttribute( 'class' );

                $list_item_attr_class->value = 'mynewclass';

                $page_numbers_item->parentNode->appendChild( $list_item_attr_class );

            }


            // Replace the class 'page-numbers' with 'page-link'

            $page_numbers_item->attributes->item(0)->value = str_replace( 

                            'page-numbers',

                            'pagination-link',

                            $page_numbers_item->attributes->item(0)->value );


                             // Replace the class 'page-numbers' with 'page-link'

            $page_numbers_item->attributes->item(0)->value = str_replace( 

                            'prev pagination-link',

                            'pagination-previous',

                            $page_numbers_item->attributes->item(0)->value );

        }

        $yupo = $xpath->query( "//*[contains(concat(' ', normalize-space(@class), ' '), ' page-numbers current')]" );

        foreach($yupo as $yup){

            $yup->attributes->item(1)->value = str_replace( 

                            'page-numbers current',

                            'pagination-link is-current',

                            $yup->attributes->item(1)->value );

        }



        // Save the updated HTML and output it.

        $output = $dom->saveHTML();

    }


    return $output;

}


查看完整回答
反对 回复 2023-04-28
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您可以仅使用 vanilla JavaScript 轻松实现此目的:


const elActivePage = document.querySelector('span.current');

elActivePage.className = 'pagination-link is-current';


查看完整回答
反对 回复 2023-04-28
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信