WordPress astra主题代码自定义

每次更新都导致代码失效,直接备份一份:

/**
 * Remove Author Link from Astra Theme
 */
add_filter( 'astra_post_author', 'remove_author_link_from_astra' );
function remove_author_link_from_astra( $output ) {
    $author = get_the_author();
    // 重新格式化作者元数据,去掉 <a> 标签
    return '<span class="author-name">' . esc_html( $author ) . '</span>';
}



function custom_astra_read_more_text() {
    return '阅读全文 →'; // 将 '阅读全文' 修改为你需要的文本
}

add_filter('astra_post_read_more', 'custom_astra_read_more_text');



add_filter( 'astra_single_post_navigation', 'astra_change_next_prev_text' );

/**
 * 修改单篇文章的上下篇导航文字
 *
 * @param array $args 上一篇/下一篇链接的参数。
 * @return array
 */
function astra_change_next_prev_text( $args ) {
    // 设置您的自定义文本
    $prev_text = '« 上一篇: %title'; // 可以在这里修改箭头或加上文字
    $next_text = '下一篇: %title »';

    $args['prev_text'] = $prev_text;
    $args['next_text'] = $next_text;

    return $args;
}

/**
 * 全局替换 WordPress 分页系统中的 Previous 和 Next
 */
add_filter( 'get_the_posts_pagination', function( $html ) {
    $html = str_replace( 'Previous', '上一页', $html );
    $html = str_replace( 'Next', '下一页', $html );
    return $html;
}, 999 );

add_filter( 'paginate_links_output', function( $r, $args ) {
    $r = str_replace( 'Previous', '上一页', $r );
    $r = str_replace( 'Next', '下一页', $r );
    return $r;
}, 999, 2 );

/**
 * Astra 主题单篇文章页下方显示分类和标签
 */
function custom_display_tags_and_categories() {
    // 仅在单篇文章页显示
    if ( is_single() ) {
        echo '<div class="custom-post-meta">';
        
        // 显示分类
        if ( get_the_category() ) {
            echo '<div class="post-categories">' . esc_html__('分类: ', 'astra') . get_the_category_list(', ') . '</div>';
        }
        
        // 显示标签
        if ( get_the_tags() ) {
            echo '<div class="post-tags">' . get_the_tag_list(esc_html__('标签: ', 'astra') , ', ') . '</div>';
        }
        
        echo '</div>';
    }
}
// 将此函数挂载到 astra_entry_after (内容下方)
add_action( 'astra_entry_after', 'custom_display_tags_and_categories' );




/**
 * 在 Astra 主题的日期后面追加 WP-PostViews 浏览量
 */
add_filter( 'astra_post_date', 'custom_astra_post_date_with_views' );

function custom_astra_post_date_with_views( $output ) {
    // 仅在前端单篇文章或文章列表/归档页生效
    if ( ! is_admin() && function_exists( 'the_views' ) ) {
        
        // 获取 WP-PostViews 的浏览量 HTML 标签,传递 false 表示不直接 echo 而是返回字符串
        $views = the_views( false );
        
        if ( $views ) {
            // 在原有的日期 HTML 结构后追加浏览量,并用 span 标签包裹方便调整样式
            $output .= '<span class="postview-meta" style="margin-left: 1px;">/ ' . $views . '</span>';
        }
    }
    return $output;
}

add_filter('request', function($query_vars) {
	if(!isset($_GET['page_id']) && !isset($_GET['pagename']) && !empty($query_vars['pagename'])){
		$pagename	= $query_vars['pagename'];
		$categories	= get_categories(['hide_empty'=>false]);
		$categories	= wp_list_pluck($categories, 'slug');

		if(in_array($pagename, $categories)){
			$query_vars['category_name']	= $query_vars['pagename'];
			unset($query_vars['pagename']);
		}
	}

	return $query_vars;
});

add_filter('pre_term_link', function($term_link, $term){
	if($term->taxonomy == 'category'){
		return '%category%';
	}

	return $term_link;
}, 10, 2);


/**
 * Astra / WordPress 分类页面自定义 SEO 标题
 */
add_filter( 'pre_get_document_title', 'custom_category_seo_title' );

function custom_category_seo_title( $title ) {
    // 确保当前页面是文章分类归档页
    if ( is_category() ) {
        
        // 获取当前分类的 ID
        $category_id = get_queried_object_id();
        
        // 根据分类 ID 或别名 (Slug) 设置自定义标题
        switch ( $category_id ) {
            case 12: // 将 12 替换为你实际的分类 ID
                $title = '这是分类 12 的自定义 SEO 标题 | 网站名称';
                break;
            case 15: // 替换为另一个分类 ID
                $title = '这是分类 15 的自定义 SEO 标题 | 网站名称';
                break;
            default:
                // 如果分类没有单独设置,则显示默认的分类名称加后缀
                $title = single_cat_title( '', false ) . ' - 精彩文章分类 - 网站名称';
                break;
        }
    }
    
    return $title;
}

👋 感谢您的观看!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享