ci-syndication/proposal.md

148 lines
5.1 KiB
Markdown
Raw Permalink Normal View History

2024-06-06 08:57:31 +00:00
### Proposal zur Entwicklung eines WordPress Plugins für die Veröffentlichung von Beiträgen auf comenius.de
#### Projektübersicht
**Projektname:** Comenius Syndication Plugin
**Ziel:** Entwicklung eines WordPress-Plugins, das es ermöglicht, Beiträge beim Veröffentlichen auch auf der Website comenius.de zu publizieren.
2024-06-06 09:21:32 +00:00
**Projektlaufzeit:** 1-2 Wochen
2024-06-06 08:57:31 +00:00
#### Projektbeschreibung
Das vorgeschlagene Plugin erweitert die Funktionalität des WordPress-Post-Editors, indem es eine Option zur Syndikation von Beiträgen auf comenius.de hinzufügt. Autoren können durch Aktivieren einer Checkbox in der Seitenleiste des Editors festlegen, ob ein Beitrag zusätzlich auf comenius.de veröffentlicht werden soll.
#### Funktionsumfang
1. **Meta Box im Post-Editor**
- Eine neue Meta Box wird in der Seitenleiste des Post-Editors hinzugefügt.
- Checkbox: "Auch auf comenius.de veröffentlichen"
2. **Speicherung der Meta Box Daten**
- Beim Speichern eines Beitrags wird geprüft, ob die Checkbox aktiviert ist.
- Wenn die Checkbox aktiviert ist, wird der Beitrag zu comenius.de gesendet.
3. **Syndikation des Beitrags**
- Beitragstitel, Inhalt, Kategorien, Tags und das Beitragsbild werden zu comenius.de gesendet.
- Der Beitrag wird auf comenius.de im Status "Pending" erstellt.
4. **REST API Integration**
- Verwendung der WordPress REST API für die Übertragung des Beitrags.
- Authentifizierung mittels API-Token.
#### Technische Anforderungen
- **WordPress Version:** 5.0 oder höher
- **PHP Version:** 7.4 oder höher
- **Zugang zu comenius.de:** API-Token für die Authentifizierung
#### Beispiellösung
Nachfolgend ein Beispiel für den Code des Plugins:
```php
<?php
/*
Plugin Name: Comenius Syndication
Description: Publishes posts to comenius.de when the option is selected in the post editor.
Version: 1.0
Author: Dein Name
*/
// Add the meta box to the post editor
function comenius_add_meta_box() {
add_meta_box(
'comenius_meta_box',
'Comenius Syndication',
'comenius_meta_box_callback',
'post',
'side'
);
}
add_action('add_meta_boxes', 'comenius_add_meta_box');
function comenius_meta_box_callback($post) {
wp_nonce_field('comenius_meta_box', 'comenius_meta_box_nonce');
$value = get_post_meta($post->ID, '_comenius_syndicate', true);
?>
<label for="comenius_syndicate">
<input type="checkbox" id="comenius_syndicate" name="comenius_syndicate" value="1" <?php checked($value, '1'); ?> />
Auch auf comenius.de veröffentlichen
</label>
<?php
}
// Save the meta box selection
function comenius_save_meta_box_data($post_id) {
if (!isset($_POST['comenius_meta_box_nonce']) || !wp_verify_nonce($_POST['comenius_meta_box_nonce'], 'comenius_meta_box')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (!current_user_can('edit_post', $post_id)) {
return;
}
$syndicate = isset($_POST['comenius_syndicate']) ? '1' : '';
update_post_meta($post_id, '_comenius_syndicate', $syndicate);
if ($syndicate) {
comenius_syndicate_post($post_id);
}
}
add_action('save_post', 'comenius_save_meta_box_data');
function comenius_syndicate_post($post_id) {
$post = get_post($post_id);
$post_data = array(
'title' => $post->post_title,
'content' => $post->post_content,
'status' => 'pending',
'categories' => wp_get_post_categories($post_id),
'tags' => wp_get_post_tags($post_id, array('fields' => 'names')),
);
$featured_image_id = get_post_thumbnail_id($post_id);
if ($featured_image_id) {
$featured_image_url = wp_get_attachment_url($featured_image_id);
$post_data['featured_image'] = $featured_image_url;
}
$response = wp_remote_post('https://comenius.de/wp-json/wp/v2/posts', array(
'body' => json_encode($post_data),
'headers' => array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . COMENIUS_API_TOKEN, // Sie müssen hier Ihr API-Token hinzufügen
),
));
if (is_wp_error($response)) {
error_log('Error syndicating post to comenius.de: ' . $response->get_error_message());
} else {
$body = wp_remote_retrieve_body($response);
$data = json_decode($body);
if (isset($data->id)) {
update_post_meta($post_id, '_comenius_syndicated_post_id', $data->id);
}
}
}
```
#### Zeitplan
| Meilenstein | Dauer |
|-------------------------------------|-------------|
| Entwicklung des Plugins | 2 Wochen |
| Testen und Debuggen | 1 Woche |
2024-06-06 09:21:32 +00:00
2024-06-06 08:57:31 +00:00
#### Schlussfolgerung
Das vorgeschlagene Comenius Syndication Plugin wird den Redaktionsprozess erheblich vereinfachen und die Reichweite der veröffentlichten Beiträge erhöhen. Durch die Automatisierung der Syndikation wird der Zeitaufwand für Redakteure reduziert und die Konsistenz der veröffentlichten Inhalte auf verschiedenen Plattformen gewährleistet.
Für weitere Fragen oder Anpassungen des Vorschlags stehen wir Ihnen gerne zur Verfügung.