אם אתם משתמשים ב- BeeHiiv כדי לנהל רשימות תפוצה ורוצים שליטה מלאה על תהליך ההרשמה באתר ה־WordPress שלכם, אתם יכולים לוותר על תוספים צד שלישי וליצור פתרון מותאם אישית בעצמכם באמצעות ה API של BeeHiiv.
כך אגב אני בדיוק עושה באתר שלי, באמצעות טופס הרשמה קליל שמתחבר ישירות ל- BeeHiiv API בעזרת PHP ו־cURL. מהיר, גמיש ונמצא לגמרי בשליטתי…
אז במדריך הזה נעבור יחד שלב־אחר־שלב על יצירת טופס הרשמה שמתקשר ישירות עם BeeHiiv באמצעות PHP ו־cURL.
המדריך מיועד למפתחים שמחפשים אינטגרציה פשוטה, מאובטחת וגמישה עם BeeHiiv, בלי JavaScript, בלי תוספים, רק PHP נקי.
שלב 1: יצירת טופס ההרשמה
צרו קובץ בשם subscribe-form.php
בתיקיית התבנית. הקובץ יכיל את טופס ה-HTML שמקבל את כתובת האימייל מהמשתמש:
<?php
$form_html = '<div class="home_form">
<form class="subscribeForm" action="/wp-content/themes/your-theme/functions/subscribe.php" method="post">
<input type="text" name="hp_email" style="display:none;">
<input type="email" name="email" autocomplete="on" placeholder="youremail@gmail.com" required>
<input type="submit" name="subscribe" value="Subscribe">
</form>
</div>';
echo $form_html;
?>
הטופס כולל שדה נסתר מסוג honeypot בשם hp_email
להגנה מפני בוטים, שדה להזנת האימייל וכפתור שליחה.
שלב 2: טיפול בטופס בצד השרת
כעת ניצור את הקובץ שמקבל את הנתונים מהטופס ושולח אותם ל-BeeHiiv. שמרו אותו בשם subscribe.php
בתוך תיקיית functions
של התבנית.
התפקיד שלו הוא לאמת את הנתונים, לחסום ספאם ולשלוח את כתובת האימייל ל-BeeHiiv API.
<?php
$apiKey = 'YOUR_BEEHIIV_API_KEY_HERE'; // מפתח API פרטי של BeeHiiv
// פונקציית לוג לשמירת שגיאות בקובץ
function log_error($message) {
file_put_contents('error_log.txt', date('Y-m-d H:i:s') . " - " . $message . "\n", FILE_APPEND);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = $_POST['email'] ?? null;
$hp_email = $_POST['hp_email'] ?? '';
$publicationId = 'your-publication-id-here'; // מזהה הפרסום של BeeHiiv
// חסימת בוטים דרך שדה honeypot
if (!empty($hp_email)) {
log_error('Spam detected: honeypot field filled.');
echo 'Failed!';
exit;
}
// אימות שהאימייל לא ריק
if (empty($email)) {
log_error('Missing email address.');
echo 'Missing email.';
exit;
}
// כתובת API של BeeHiiv
$url = "https://api.beehiiv.com/v2/publications/$publicationId/subscriptions";
$data = json_encode(['email' => $email]);
// הגדרת בקשת cURL
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// שליחת הבקשה
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// תגובה מה־API
if ($httpCode === 200 || $httpCode === 201) {
echo 'Subscription successful!';
} else {
log_error("Subscription failed. HTTP code: $httpCode");
echo 'Subscription failed. Please try again later.';
}
} else {
echo 'Invalid request method.';
}
?>
הקוד עושה את הפעולות הבאות:
- בודק אם הבקשה היא POST: מונע גישה ישירה או טעויות דרך GET.
- מאמת את האימייל: מדלג על טפסים ריקים או חשודים בעזרת שדה honeypot.
- יוצר בקשת JSON ל־BeeHiiv: עם cURL ו- headers מתאימים.
- מטפל בתגובה: מציג הודעת הצלחה או רושם שגיאה לקובץ
error_log.txt
.
שיטה זו בצד השרת שומרת על מפתח ה־API שלכם בצורה בטוחה ומונעת ספאם בצורה פשוטה ויעילה.
שלב 3: שילוב הטופס בתבנית
כדי להציג את טופס ההרשמה בכל מקום בתבנית (למשל בדף הבית או פוטר), כלול את הקובץ כך:
<?php get_template_part('subscribe-form'); ?>
וודאו שהנתיב לקובץ subscribe-form.php
נכון. ניתן גם להכניס את הקוד ישירות לתוך תבנית אם מעדיפים.
שלב 4: בדיקה
כדי לבדוק שהכול עובד:
- הזינו כתובת אימייל תקינה בשדה.
- שלחו את הטופס.
- אם הצליח, תופיע ההודעה “Subscription successful!”
- אם יש בעיה, היא תירשם בקובץ
error_log.txt
.
ודאו ששרת האחסון שלכם תומך ב־cURL ויכול לבצע בקשות חיצוניות ל- BeeHiiv API.
הערות נוספות
- החליפו את
'YOUR_BEEHIIV_API_KEY_HERE'
ואת'your-publication-id-here'
בפרטים האמיתיים שלכם מ- BeeHiiv. - ודאו שהקובץ
subscribe.php
אינו פתוח לאינדוקס במנועי חיפוש. - ניתן להרחיב את המערכת למשלוח AJAX או למדוד אינטראקציות עם המשתמש.
לביצועים טובים יותר, שקלו להוסיף rate-limiting או תיעוד של כתובות IP כדי לצמצם פעילות של בוטים. אם מצאתם דרכים לשפר את השיטה, אשמח שתשתפו בתגובות לפוסט!