Wordpress:禁用get_the_category_list函数的链接?

时间:2014-03-31 20:31:02

标签: php wordpress

嘿我的主题使用此功能来显示帖子的类别,但它也创建了我想要删除的链接。我更喜欢PHP而不是JavaScript解决方案。

以下是代码:

<p class="postmeta">
    <?php if ( 'post' == get_post_type() ) : // Hide category and tag text for pages on Search ?>
        <?php
            /* translators: used between list items, there is a space after the comma */
            $categories_list = get_the_category_list( __( ', ', 'gridster' ) );
            if ( $categories_list && gridster_categorized_blog() ) :
        ?>
            <?php /*printf( __( '%1$s', 'gridster' ), $categories_list );*/ echo $categories_list; ?>
        <?php endif; // End if categories ?>


    <?php endif; // End if 'post' == get_post_type() ?>
</p>

Link to the codex reference

如何取消这些链接?

或从DOM中删除所有链接(但这可能会创建更多工作,因为实际文本位于<a>标记之间

HTML

 <p class="postmeta"> 
    <a target="_blank" href="http://whatever.com/category/default/" title="View all posts in Default" rel="category tag">Default</a>
</p>

谢谢!

5 个答案:

答案 0 :(得分:6)

如果您只想返回一个文本字符串并使用本机get_the_categories()函数,您只需将其包装在PHP's strip_tags() function中即可删除所有返回的HTML:

echo strip_tags( get_the_category_list(__( ', ', 'gridster' ));

答案 1 :(得分:3)

您可以尝试修改此选项以满足您的需求:

<?php
foreach((get_the_category()) as $category) {
    echo $category->cat_name . ' ';
}
?>

(来自http://premium.wpmudev.org/blog/how-to-get-a-wordpress-category-name-without-the-link/

答案 2 :(得分:0)

一个选项是copy the original function并适应您的需求。修改为删除<a>标记但未经过测试,与原始标记进行比较,根据需要进行调整,并将其添加到主题functions.php

function category_list_so_22771587( $separator = '' ) {
    global $wp_rewrite;
    $categories = get_the_category( $post_id );
    $thelist = '';
    $i = 0;
    foreach ( $categories as $category ) {
        if ( 0 < $i )
            $thelist .= $separator;
        switch ( strtolower( $parents ) ) {
            case 'multiple':
                if ( $category->parent )
                    $thelist .= get_category_parents( $category->parent, true, $separator );
                $thelist .= $category->name;
                break;
            case 'single':
                if ( $category->parent )
                    $thelist .= get_category_parents( $category->parent, false, $separator );
                $thelist .= $category->name;
                break;
            case '':
            default:
                $thelist .= $category->name;
        }
        ++$i;
    }
    return $thelist;
}

将模板修改为:

$categories_list = category_list_so_22771587( __( ', ', 'gridster' ) );

答案 3 :(得分:0)

你只是想隐藏链接吗?如果是这样,请使用css:

.postmeta a {display: none}

编辑,您还可以&#34;禁用&#34; css中的那些链接:

.postmeta a {
  pointer-events: none;
  cursor: default;
}

答案 4 :(得分:0)

您可以检索类别,提取每个项目的“名称”列,并用逗号内含每个值:

 <?= implode(', ', (array_column(get_the_category(), 'name')))?>

或者您可以检索带有链接的类别列表,并删除标签:

 <?= strip_tags(get_the_category_list(', ')) ; ?>