php 在Wordpress中,我可以用_permalink()在url末尾添加一个文本字符串吗?功能?

zxlwwiss  于 2023-02-11  发布在  PHP
关注(0)|答案(2)|浏览(114)

我使用下面的代码来创建我的网站的子页面列表。我希望所有的网址都有一些像#theheading添加到最后,这样当你去的网页,它会去到一个特定的位置上的网页有该id。

/* List Child Pages version 2 */
<?php
function wpse_list_child_pages_two( $cats = [] ) { 
    global $post;

    $current_ID = $post->ID;

    if ( is_page() && $post->post_parent ) {
        $child_of = $post->post_parent;
    } else {
        $child_of = $current_ID;
    }

    // Get the category IDs for passed in category names for query.
    $cats = ( array ) $cats;
    $cats = array_map( 'get_cat_ID', $cats );

    $args = [
        'post_type'      => 'page',
        'posts_per_page' => -1,
        'post_parent'    => $child_of,
        'order'          => 'ASC',
        'orderby'        => 'menu_order',
        'category__not_in' => $cats,
        'after' => 'top'
    ];

    $parent = new WP_Query( $args );

     if ( $parent->have_posts() ) : ?>
        <?php while ( $parent->have_posts() ) : $parent->the_post(); ?>
            <?php
                $current = function( $output ) use ( $current_ID ) {
                    return get_the_ID() === $current_ID ? $output : '';
                };
            ?>
                <li class="nav-item nav-item<?php the_ID(); echo $current( ' active ' ); ?>">
                    <a href="<?php the_permalink(); ?>" <?php echo $current( 'aria-current="page"' ); ?>><?php the_title(); ?></a>
                </li>
        <?php endwhile; ?>

    <?php endif; wp_reset_postdata();
}

如果我像下面这样把#theheading添加到html中,它会添加到我的permalink中的/之后

<a href="<?php the_permalink(); ?> #theheading" <?php echo $current( 'aria-current="page"' ); ?>><?php the_title(); ?></a>

是否有一种简单的方法可以将sting传递到the_permalink()的末尾;在我的网址的结束斜线之前的结果?
尝试将#theheading添加到html中的函数后。

oxcyiej7

oxcyiej71#

你可以用javascript.对于WordPress你可以使用钩子the_permalinkhttps://developer.wordpress.org/reference/hooks/the_permalink/
例如:

function append_query_string($url) {
    // return add_query_arg($_GET, $url);
    return $url . "#theheading";
}
add_filter('the_permalink', 'append_query_string');

顺便问一下,你有没有试过在URL和哈希之间没有空格?

<a href="<?php the_permalink(); ?>#theheading" <?php echo $current( 'aria-current="page"' ); ?>><?php the_title(); ?></a>
aydmsdu9

aydmsdu92#

好了,原来我尝试的方法是转到#theheading.由于某种原因,当我最初测试它时,它只是刷新页面而没有转到#theheading,所以我假设它是从url和#theheading之间的/(例如:someurl/#theheading),但它现在可以工作了。不过你是对的,多余的空间应该被删除。所以下面的内容可以工作。

<a href="<?php the_permalink(); ?>#theheading" <?php echo $current( 'aria-current="page"' ); ?>><?php the_title(); ?></a>

相关问题