arraypress/wp-referrer-utils
Composer 安装命令:
composer require arraypress/wp-referrer-utils
包简介
A lean WordPress library for HTTP referrer detection and analysis
关键字:
README 文档
README
A lightweight WordPress library for detecting and analyzing HTTP referrers. Perfect for analytics, security, and understanding your traffic sources without external dependencies.
Features
- 🎯 Clean API: WordPress-style snake_case methods with consistent interfaces
- 🔍 Traffic Analysis: Identify search engines, social media, and campaign sources
- 🔒 Security Ready: Validate referrers for CSRF protection and security checks
- 📊 UTM Support: Extract campaign parameters for marketing analysis
- 🔗 Domain Operations: Check internal vs external referrers
- 🌐 Search Engine Detection: Identify 10+ search engines and extract search terms
- 📱 Social Media Detection: Recognize 13+ social platforms
- 🛡️ WordPress Native: Uses WordPress sanitization and validation
Requirements
- PHP 7.4 or later
- WordPress 5.0 or later
Installation
composer require arraypress/wp-referrer-utils
Basic Usage
Get Referrer Information
use ArrayPress\ReferrerUtils\Referrer; // Get current referrer $referrer = Referrer::get(); // Returns: "https://google.com/search?q=wordpress" or null // Check if valid URL if ( Referrer::is_valid( $referrer ) ) { // Valid referrer URL } // Get domain from referrer $domain = Referrer::get_domain(); // Returns: "google.com"
Traffic Source Analysis
// Get traffic source type $source = Referrer::get_traffic_source(); // Returns: 'search', 'social', 'direct', 'referral', 'campaign', or 'unknown' // Check specific source types if ( Referrer::is_search_engine() ) { // Visitor came from search engine } if ( Referrer::is_social() ) { // Visitor came from social media } if ( Referrer::is_external() ) { // Visitor came from external site }
Search Engine Detection
// Get search engine name $engine = Referrer::get_search_engine(); // Returns: "google", "bing", "yahoo", "duckduckgo", etc. // Get search terms $terms = Referrer::get_search_terms(); // Returns: "wordpress plugins" or null
Social Media Detection
// Get social platform $platform = Referrer::get_social_platform(); // Returns: "facebook", "twitter", "instagram", "linkedin", etc.
Campaign Tracking
// Get UTM parameters $utm = Referrer::get_utm_parameters(); /* Returns: [ 'source' => 'newsletter', 'medium' => 'email', 'campaign' => 'summer-sale', 'term' => 'discount', 'content' => 'header-link' ] */
Comprehensive Analysis
// Get all referrer information at once $info = Referrer::get_referrer_info(); /* Returns: [ 'url' => 'https://google.com/search?q=wordpress', 'is_valid' => true, 'domain' => 'google.com', 'root_domain' => 'google.com', 'is_external' => true, 'search_engine' => 'google', 'search_terms' => 'wordpress', 'social_platform' => null, 'utm_parameters' => [], 'traffic_source' => 'search' ] */
Common Use Cases
Analytics Tracking
function track_visitor_sources() { $info = Referrer::get_referrer_info(); // Store analytics data $analytics = [ 'traffic_source' => $info['traffic_source'], 'search_engine' => $info['search_engine'], 'search_terms' => $info['search_terms'], 'social_platform' => $info['social_platform'], 'utm_source' => $info['utm_parameters']['source'], 'timestamp' => current_time( 'mysql' ) ]; update_option( 'traffic_analytics', $analytics ); } add_action( 'wp_head', 'track_visitor_sources' );
CSRF Protection
function check_form_referrer() { if ( ! Referrer::is_internal() ) { wp_die( 'Invalid form submission - referrer check failed.' ); } } // Use in form processing if ( $_POST['submit'] ) { check_form_referrer(); // Process form... }
Content Personalization
function personalize_content_by_source() { $source = Referrer::get_traffic_source(); switch ( $source ) { case 'search': echo '<div class="welcome-search">Welcome from search!</div>'; break; case 'social': $platform = Referrer::get_social_platform(); echo "<div class='welcome-social'>Thanks for visiting from {$platform}!</div>"; break; case 'campaign': $utm = Referrer::get_utm_parameters(); echo "<div class='welcome-campaign'>Welcome {$utm['campaign']} visitor!</div>"; break; } } add_action( 'wp_head', 'personalize_content_by_source' );
Supported Platforms
Search Engines (17+)
Traditional Search Engines:
- Google - All international domains (google.com, google.co.uk, etc.)
- Bing - Microsoft's search engine
- Yahoo - Yahoo Search with international variants
- DuckDuckGo - Privacy-focused search
- Baidu - Chinese search engine
- Yandex - Russian search engine
- Ask - Ask.com search
- AOL - AOL Search
- Ecosia - Environmental search engine
- Startpage - Privacy search engine
AI Search Engines (2024-2025):
- Perplexity - AI-powered answer engine with citations
- You.com - AI search with personalized results
- Phind - AI search engine for developers
- Kagi - Premium ad-free search with AI features
- SearchGPT - OpenAI's ChatGPT Search
- Andi - Conversational AI search assistant
- DeepSeek - AI-powered search and chat
Social Media Platforms (13+)
- Facebook - Including mobile variants and short links (fb.me, m.me)
- Twitter/X - Including t.co short links and x.com rebrand
- Instagram - Meta's photo platform with ig.me short links
- LinkedIn - Professional networking with lnkd.in short links
- Pinterest - Visual discovery with pin.it short links
- Reddit - Social news aggregation with redd.it short links
- YouTube - Video platform and youtu.be short links
- TikTok - Short video platform with vm.tiktok.com
- Snapchat - Multimedia messaging
- Discord - Gaming and community chat with discord.gg
- Telegram - Messaging platform with t.me short links
- WhatsApp - Messaging app with wa.me short links
- Mastodon - Decentralized social network
- Threads - Meta's Twitter alternative
Campaign Parameters
- UTM Parameters - utm_source, utm_medium, utm_campaign, utm_term, utm_content
- Search Parameters - q, query, p, wd, text (for search term extraction)
Method Reference
Core Methods
get()- Get current HTTP referreris_valid( ?string $referrer )- Check if referrer is valid URLget_domain( ?string $referrer )- Get domain from referrerget_root_domain( ?string $referrer )- Get root domain without subdomains
Domain Operations
is_external( ?string $referrer, ?string $current_site )- Check if external referreris_internal( ?string $referrer, ?string $current_site )- Check if internal referrer
Search Engine Detection
get_search_engine( ?string $referrer )- Get search engine nameget_search_terms( ?string $referrer )- Get search termsis_search_engine( ?string $referrer )- Check if from search engine
Social Media Detection
get_social_platform( ?string $referrer )- Get social platform nameis_social( ?string $referrer )- Check if from social media
Campaign Tracking
get_utm_parameters( ?string $referrer )- Get UTM parameters arrayget_campaign_source( ?string $referrer )- Get campaign source
Analysis
get_traffic_source( ?string $referrer )- Get traffic source typeget_referrer_info( ?string $referrer )- Get comprehensive referrer information
WordPress Integration
- Sanitized Input: All referrer data is sanitized using
wp_strip_all_tags()andwp_unslash() - Enhanced Security: UTM parameters and search terms use
sanitize_text_field()for additional protection - WordPress Native: Uses
get_option('siteurl')for site URL detection - Performance Optimized: Efficient domain lookups with comprehensive coverage
- Standards Compliant: Follows WordPress coding standards and best practices
Privacy Considerations
This library analyzes referrer headers that are automatically sent by browsers. It:
- Does not store personal data - only analyzes traffic patterns
- Respects user privacy - works with publicly available referrer information
- GDPR Compliant - when used for analytics, follows standard referrer analysis practices
Requirements
- PHP 7.4+
- WordPress 5.0+
Testing
The library has been thoroughly tested with:
- ✅ 100% test coverage for core functionality
- ✅ Real-world referrer patterns from major platforms
- ✅ Edge case handling for malformed URLs and invalid input
- ✅ Performance validation with hundreds of URLs
- ✅ WordPress integration with proper sanitization
- ✅ Modern AI search engines and social media short links
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the GPL-2.0-or-later License.
Support
arraypress/wp-referrer-utils 适用场景与选型建议
arraypress/wp-referrer-utils 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 57 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 09 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「wordpress」 「analytics」 「search-engine」 「referer」 「social-media」 「UTM」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 arraypress/wp-referrer-utils 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 arraypress/wp-referrer-utils 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 arraypress/wp-referrer-utils 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The missing elasticsearch ORM for Laravel!
A collection macros to extend Laravel Scout with more Algolia capabilities
Laravel, Lumen and Native php elasticseach query builder to build complex queries using an elegant syntax
SphinxSearch PHP API updated slightly for PHP7
Kirby Panel plugin for search engine result page previews
Analytics chooser extensions for site settings.
统计信息
- 总下载量: 57
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 27
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-2.0-or-later
- 更新时间: 2025-09-02