Mu-Plugin 1.1: Eingabebox, Elementor-Widgets FAQ und Kurzantwort; normaler Beitragsinhalt
This commit is contained in:
34
README.md
34
README.md
@@ -183,21 +183,31 @@ Fehlt `seo_titel`, wird `titel` verwendet.
|
||||
|
||||
### Ausgabeform in WordPress
|
||||
|
||||
Der Node **Konfiguration** hat den Schalter `elementor_ausgabe`.
|
||||
Der Artikel landet als normaler WordPress-Beitragsinhalt, nicht als
|
||||
Elementor-Layout. Kurzantwort, FAQ, CTA-Ziel und Stand liegen als Meta-Felder
|
||||
am Beitrag.
|
||||
|
||||
Steht er auf `true` (Standard), baut der Workflow aus dem Artikel eine
|
||||
Elementor-Struktur: Der Text wird an den H2-Grenzen in einzelne
|
||||
Text-Editor-Widgets zerlegt, die Kurzantwort bekommt einen eigenen Block, und
|
||||
das FAQ wird zu einem **nested-accordion** mit aktiviertem `faq_schema`.
|
||||
Das ist dasselbe Widget, das die Leistungsseiten von skrift.de verwenden, der
|
||||
Beitrag laesst sich also im Builder wie jede andere Seite bearbeiten und
|
||||
WordPress gibt automatisch FAQPage-Schema aus.
|
||||
Das Mu-Plugin `skrift-ratgeber-felder.php` (ab Version 1.1) bringt dafuer mit:
|
||||
|
||||
Steht er auf `false`, landet der Artikel als klassischer Beitragsinhalt. Das FAQ
|
||||
gibt dann der Shortcode `[skrift_faq]` aus, den das Mu-Plugin mitbringt.
|
||||
- **Eingabebox "Ratgeber: Kurzantwort, CTA und FAQ"** unter dem Editor.
|
||||
Dort lassen sich alle vier Felder von Hand pflegen, das FAQ als Liste mit
|
||||
"Frage hinzufuegen". Speichern aus n8n per REST beruehrt die Box nicht.
|
||||
- **Elementor-Widget "Skrift FAQ"**. Einmal ins Single-Post-Template im
|
||||
Theme Builder setzen, dann zeigt jeder Beitrag automatisch seine eigenen
|
||||
Fragen als Umschalter. Gestaltung (Typografie, Farben, Rahmen, Abstaende)
|
||||
im Widget, FAQPage-Schema per Schalter. Beitraege ohne FAQ zeigen nichts an.
|
||||
- **Elementor-Widget "Skrift Kurzantwort"** fuer die Kurzantwort-Box,
|
||||
loest Preis-Shortcodes im Text auf.
|
||||
- Shortcodes `[skrift_faq titel="..."]` und `[skrift_kurzantwort]` als
|
||||
Alternative, etwa im Elementor-Shortcode-Widget.
|
||||
- `cta_ziel` und `stand_datum` gibt Elementor Pro direkt ueber das Dynamic Tag
|
||||
"Beitrags-Custom-Feld" aus.
|
||||
|
||||
Die Meta-Felder `kurzantwort`, `faq`, `cta_ziel` und `stand_datum` werden in
|
||||
beiden Faellen geschrieben, unabhaengig von der Darstellung.
|
||||
Das native Elementor-Widget "Akkordeon" kann keine Liste aus einem Meta-Feld
|
||||
wiederholen, die Anzahl seiner Eintraege ist fest. Deshalb das eigene Widget.
|
||||
|
||||
Der Schalter `elementor_ausgabe` im Node **Konfiguration** steht auf `false`
|
||||
und sollte dort bleiben.
|
||||
|
||||
### Schreibregeln fuer content_html
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ KONF = node("Konfiguration", "n8n-nodes-base.set", 3.4, [-240, 190], {
|
||||
{"id": nid(), "name": "wp_base", "value": "https://skrift.de", "type": "string"},
|
||||
{"id": nid(), "name": "score_ziel", "value": "={{ $json.body && $json.body.score_ziel ? Number($json.body.score_ziel) : 72 }}", "type": "number"},
|
||||
{"id": nid(), "name": "pause_zwischen_artikeln", "value": 5, "type": "number"},
|
||||
{"id": nid(), "name": "elementor_ausgabe", "value": True, "type": "boolean"},
|
||||
{"id": nid(), "name": "elementor_ausgabe", "value": False, "type": "boolean"},
|
||||
{"id": nid(), "name": "faq_ueberschrift", "value": "Häufige Fragen", "type": "string"},
|
||||
{"id": nid(), "name": "benachrichtigung_an", "value": "privat@lucas-orth.de", "type": "string"},
|
||||
]}, "options": {}})
|
||||
|
||||
@@ -1,66 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Skrift Ratgeber Felder
|
||||
* Description: Registriert die Ratgeber-Meta-Felder REST-schreibbar (kurzantwort, faq, cta_ziel, stand_datum) und liefert einen Shortcode fuer die FAQ-Ausgabe.
|
||||
* Version: 1.0.0
|
||||
* Description: Meta-Felder fuer Ratgeberartikel (kurzantwort, faq, cta_ziel, stand_datum) mit Eingabebox im Editor, Shortcodes und Elementor-Widgets, die das FAQ-Feld automatisch als Umschalter ausgeben.
|
||||
* Version: 1.1.0
|
||||
* Author: Lucas Orth
|
||||
*
|
||||
* Ablage: wp-content/mu-plugins/skrift-ratgeber-felder.php
|
||||
* Als mu-plugin ist keine Aktivierung noetig und es kann nicht versehentlich
|
||||
* deaktiviert werden. Alternativ als normales Plugin in einem eigenen Ordner.
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Nur Nutzer, die den Beitrag bearbeiten duerfen, duerfen die Felder schreiben.
|
||||
* Das gilt auch fuer REST-Zugriffe mit Application Password.
|
||||
*/
|
||||
/* ------------------------------------------------------------------------
|
||||
* 1. Meta-Felder registrieren (REST-schreibbar fuer n8n)
|
||||
* --------------------------------------------------------------------- */
|
||||
|
||||
function skrift_ratgeber_meta_auth( $allowed, $meta_key, $post_id ) {
|
||||
return current_user_can( 'edit_post', $post_id );
|
||||
}
|
||||
|
||||
add_action( 'init', function () {
|
||||
|
||||
// Kurzantwort: ein Absatz, der die Suchfrage sofort beantwortet.
|
||||
register_post_meta( 'post', 'kurzantwort', array(
|
||||
'type' => 'string',
|
||||
'single' => true,
|
||||
'show_in_rest' => true,
|
||||
'sanitize_callback' => 'wp_kses_post',
|
||||
'auth_callback' => 'skrift_ratgeber_meta_auth',
|
||||
'description' => 'Kurzantwort auf die Hauptfrage des Artikels',
|
||||
) );
|
||||
|
||||
// Ziel des Call-to-Action, als URL.
|
||||
register_post_meta( 'post', 'cta_ziel', array(
|
||||
'type' => 'string',
|
||||
'single' => true,
|
||||
'show_in_rest' => true,
|
||||
'sanitize_callback' => 'esc_url_raw',
|
||||
'auth_callback' => 'skrift_ratgeber_meta_auth',
|
||||
'description' => 'Zieladresse des Call-to-Action',
|
||||
) );
|
||||
|
||||
// Stand des Artikels als ISO-Datum (YYYY-MM-DD).
|
||||
register_post_meta( 'post', 'stand_datum', array(
|
||||
'type' => 'string',
|
||||
'single' => true,
|
||||
'show_in_rest' => true,
|
||||
'sanitize_callback' => function ( $wert ) {
|
||||
return preg_match( '/^\d{4}-\d{2}-\d{2}$/', (string) $wert ) ? $wert : '';
|
||||
},
|
||||
'sanitize_callback' => 'skrift_ratgeber_datum',
|
||||
'auth_callback' => 'skrift_ratgeber_meta_auth',
|
||||
'description' => 'Stand des Artikels, Format YYYY-MM-DD',
|
||||
) );
|
||||
|
||||
/**
|
||||
* FAQ als wiederholbare Gruppe.
|
||||
* WordPress braucht fuer verschachtelte Werte ein explizites Schema,
|
||||
* sonst lehnt die REST-API das Schreiben ab.
|
||||
*/
|
||||
register_post_meta( 'post', 'faq', array(
|
||||
'type' => 'array',
|
||||
'single' => true,
|
||||
@@ -79,45 +64,530 @@ add_action( 'init', function () {
|
||||
),
|
||||
),
|
||||
'auth_callback' => 'skrift_ratgeber_meta_auth',
|
||||
'description' => 'Liste aus Frage-Antwort-Paaren',
|
||||
) );
|
||||
} );
|
||||
|
||||
/**
|
||||
* Ausgabe der FAQ im Beitrag.
|
||||
* Verwendung im Elementor-Shortcode-Widget: [skrift_faq]
|
||||
* Optional mit Ueberschrift: [skrift_faq titel="Haeufige Fragen"]
|
||||
*/
|
||||
add_shortcode( 'skrift_faq', function ( $atts ) {
|
||||
$atts = shortcode_atts( array(
|
||||
'titel' => '',
|
||||
'post_id' => 0,
|
||||
), $atts, 'skrift_faq' );
|
||||
function skrift_ratgeber_datum( $wert ) {
|
||||
return preg_match( '/^\d{4}-\d{2}-\d{2}$/', (string) $wert ) ? $wert : '';
|
||||
}
|
||||
|
||||
$post_id = $atts['post_id'] ? (int) $atts['post_id'] : get_the_ID();
|
||||
$faq = get_post_meta( $post_id, 'faq', true );
|
||||
/* ------------------------------------------------------------------------
|
||||
* 2. Eingabebox im Beitragseditor (Gutenberg und klassisch)
|
||||
* --------------------------------------------------------------------- */
|
||||
|
||||
if ( empty( $faq ) || ! is_array( $faq ) ) {
|
||||
return '';
|
||||
add_action( 'add_meta_boxes_post', function () {
|
||||
add_meta_box(
|
||||
'skrift_ratgeber',
|
||||
'Ratgeber: Kurzantwort, CTA und FAQ',
|
||||
'skrift_ratgeber_metabox',
|
||||
'post',
|
||||
'normal',
|
||||
'high'
|
||||
);
|
||||
} );
|
||||
|
||||
function skrift_ratgeber_metabox( $post ) {
|
||||
wp_nonce_field( 'skrift_ratgeber_speichern', 'skrift_ratgeber_nonce' );
|
||||
|
||||
$kurz = (string) get_post_meta( $post->ID, 'kurzantwort', true );
|
||||
$cta = (string) get_post_meta( $post->ID, 'cta_ziel', true );
|
||||
$stand = (string) get_post_meta( $post->ID, 'stand_datum', true );
|
||||
$faq = get_post_meta( $post->ID, 'faq', true );
|
||||
if ( ! is_array( $faq ) ) {
|
||||
$faq = array();
|
||||
}
|
||||
?>
|
||||
<style>
|
||||
.skrift-mb p { margin: 0 0 14px; }
|
||||
.skrift-mb label { display: block; font-weight: 600; margin-bottom: 4px; }
|
||||
.skrift-mb .skrift-mb__zeile { display: flex; gap: 16px; }
|
||||
.skrift-mb .skrift-mb__zeile > p { flex: 1; }
|
||||
.skrift-faq-zeile { border: 1px solid #dcdcde; border-radius: 4px; padding: 10px 12px; margin-bottom: 10px; background: #fafafa; }
|
||||
.skrift-faq-zeile input, .skrift-faq-zeile textarea { width: 100%; }
|
||||
.skrift-faq-zeile textarea { margin-top: 6px; }
|
||||
.skrift-faq-zeile .skrift-faq-weg { margin-top: 6px; color: #b32d2e; }
|
||||
.skrift-mb .description { color: #646970; font-size: 12px; }
|
||||
</style>
|
||||
<div class="skrift-mb">
|
||||
<p>
|
||||
<label for="skrift_kurzantwort">Kurzantwort</label>
|
||||
<textarea id="skrift_kurzantwort" name="skrift_kurzantwort" rows="3" class="widefat"><?php echo esc_textarea( $kurz ); ?></textarea>
|
||||
<span class="description">Zwei bis drei Saetze, Preise nur per [skrift_preis key="..."].</span>
|
||||
</p>
|
||||
<div class="skrift-mb__zeile">
|
||||
<p>
|
||||
<label for="skrift_cta_ziel">CTA-Ziel</label>
|
||||
<input type="url" id="skrift_cta_ziel" name="skrift_cta_ziel" class="widefat" value="<?php echo esc_attr( $cta ); ?>">
|
||||
</p>
|
||||
<p>
|
||||
<label for="skrift_stand_datum">Stand</label>
|
||||
<input type="date" id="skrift_stand_datum" name="skrift_stand_datum" value="<?php echo esc_attr( $stand ); ?>">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<label>FAQ</label>
|
||||
<div id="skrift-faq-liste">
|
||||
<?php foreach ( $faq as $i => $e ) : ?>
|
||||
<?php skrift_ratgeber_faq_zeile( (string) $i, $e['frage'] ?? '', $e['antwort'] ?? '' ); ?>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<template id="skrift-faq-vorlage">
|
||||
<?php skrift_ratgeber_faq_zeile( '__i__', '', '' ); ?>
|
||||
</template>
|
||||
<button type="button" class="button" id="skrift-faq-neu">Frage hinzufuegen</button>
|
||||
<span class="description">Leere Fragen werden beim Speichern entfernt.</span>
|
||||
</div>
|
||||
<script>
|
||||
( function () {
|
||||
var liste = document.getElementById( 'skrift-faq-liste' );
|
||||
var vorlage = document.getElementById( 'skrift-faq-vorlage' );
|
||||
document.getElementById( 'skrift-faq-neu' ).addEventListener( 'click', function () {
|
||||
var html = vorlage.innerHTML.replace( /__i__/g, 'n' + Date.now() );
|
||||
liste.insertAdjacentHTML( 'beforeend', html );
|
||||
} );
|
||||
liste.addEventListener( 'click', function ( ev ) {
|
||||
if ( ev.target.classList.contains( 'skrift-faq-weg' ) ) {
|
||||
ev.preventDefault();
|
||||
ev.target.closest( '.skrift-faq-zeile' ).remove();
|
||||
}
|
||||
} );
|
||||
} )();
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
function skrift_ratgeber_faq_zeile( $i, $frage, $antwort ) {
|
||||
?>
|
||||
<div class="skrift-faq-zeile">
|
||||
<input type="text" name="skrift_faq[<?php echo esc_attr( $i ); ?>][frage]" placeholder="Frage" value="<?php echo esc_attr( $frage ); ?>">
|
||||
<textarea name="skrift_faq[<?php echo esc_attr( $i ); ?>][antwort]" rows="3" placeholder="Antwort"><?php echo esc_textarea( $antwort ); ?></textarea>
|
||||
<a href="#" class="skrift-faq-weg">Frage entfernen</a>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
add_action( 'save_post_post', function ( $post_id ) {
|
||||
// Nur wenn das Formular der Eingabebox mitgeschickt wurde. REST-Aufrufe aus n8n
|
||||
// enthalten keine Nonce und bleiben damit unberuehrt.
|
||||
if ( ! isset( $_POST['skrift_ratgeber_nonce'] ) ) {
|
||||
return;
|
||||
}
|
||||
if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['skrift_ratgeber_nonce'] ) ), 'skrift_ratgeber_speichern' ) ) {
|
||||
return;
|
||||
}
|
||||
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
||||
return;
|
||||
}
|
||||
if ( wp_is_post_revision( $post_id ) || ! current_user_can( 'edit_post', $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$html = '<div class="skrift-faq">';
|
||||
update_post_meta( $post_id, 'kurzantwort', wp_kses_post( wp_unslash( $_POST['skrift_kurzantwort'] ?? '' ) ) );
|
||||
update_post_meta( $post_id, 'cta_ziel', esc_url_raw( wp_unslash( $_POST['skrift_cta_ziel'] ?? '' ) ) );
|
||||
update_post_meta( $post_id, 'stand_datum', skrift_ratgeber_datum( sanitize_text_field( wp_unslash( $_POST['skrift_stand_datum'] ?? '' ) ) ) );
|
||||
|
||||
if ( $atts['titel'] ) {
|
||||
$html .= '<h2 class="skrift-faq__titel">' . esc_html( $atts['titel'] ) . '</h2>';
|
||||
}
|
||||
|
||||
foreach ( $faq as $eintrag ) {
|
||||
if ( empty( $eintrag['frage'] ) ) {
|
||||
$faq = array();
|
||||
$roh = isset( $_POST['skrift_faq'] ) && is_array( $_POST['skrift_faq'] ) ? wp_unslash( $_POST['skrift_faq'] ) : array();
|
||||
foreach ( $roh as $e ) {
|
||||
$frage = sanitize_text_field( $e['frage'] ?? '' );
|
||||
if ( '' === $frage ) {
|
||||
continue;
|
||||
}
|
||||
$html .= '<details class="skrift-faq__eintrag">';
|
||||
$html .= '<summary class="skrift-faq__frage">' . esc_html( $eintrag['frage'] ) . '</summary>';
|
||||
$html .= '<div class="skrift-faq__antwort">' . wp_kses_post( wpautop( $eintrag['antwort'] ?? '' ) ) . '</div>';
|
||||
$faq[] = array(
|
||||
'frage' => $frage,
|
||||
'antwort' => wp_kses_post( $e['antwort'] ?? '' ),
|
||||
);
|
||||
}
|
||||
update_post_meta( $post_id, 'faq', $faq );
|
||||
} );
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* 3. Ausgabe: gemeinsamer Renderer fuer Shortcode und Elementor-Widget
|
||||
* --------------------------------------------------------------------- */
|
||||
|
||||
function skrift_faq_eintraege( $post_id = 0 ) {
|
||||
$post_id = $post_id ? (int) $post_id : get_the_ID();
|
||||
$faq = get_post_meta( $post_id, 'faq', true );
|
||||
if ( ! is_array( $faq ) ) {
|
||||
return array();
|
||||
}
|
||||
$raus = array();
|
||||
foreach ( $faq as $e ) {
|
||||
if ( ! empty( $e['frage'] ) ) {
|
||||
$raus[] = $e;
|
||||
}
|
||||
}
|
||||
return $raus;
|
||||
}
|
||||
|
||||
function skrift_faq_basis_css() {
|
||||
static $fertig = false;
|
||||
if ( $fertig ) {
|
||||
return '';
|
||||
}
|
||||
$fertig = true;
|
||||
return '<style>'
|
||||
. '.skrift-faq__eintrag{border-bottom:1px solid rgba(0,0,0,.12)}'
|
||||
. '.skrift-faq__frage{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;font-weight:600}'
|
||||
. '.skrift-faq__frage::-webkit-details-marker{display:none}'
|
||||
. '.skrift-faq__frage::after{content:"";flex:0 0 auto;width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .2s}'
|
||||
. '.skrift-faq__eintrag[open] .skrift-faq__frage::after{transform:rotate(-135deg)}'
|
||||
. '.skrift-faq__antwort{padding:0 0 16px}'
|
||||
. '.skrift-faq__antwort>*:last-child{margin-bottom:0}'
|
||||
. '</style>';
|
||||
}
|
||||
|
||||
function skrift_faq_schema( $faq ) {
|
||||
$fragen = array();
|
||||
foreach ( $faq as $e ) {
|
||||
$fragen[] = array(
|
||||
'@type' => 'Question',
|
||||
'name' => wp_strip_all_tags( $e['frage'] ),
|
||||
'acceptedAnswer' => array(
|
||||
'@type' => 'Answer',
|
||||
'text' => wp_strip_all_tags( do_shortcode( $e['antwort'] ?? '' ) ),
|
||||
),
|
||||
);
|
||||
}
|
||||
return '<script type="application/ld+json">'
|
||||
. wp_json_encode( array(
|
||||
'@context' => 'https://schema.org',
|
||||
'@type' => 'FAQPage',
|
||||
'mainEntity' => $fragen,
|
||||
), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES )
|
||||
. '</script>';
|
||||
}
|
||||
|
||||
function skrift_faq_html( $faq, $args = array() ) {
|
||||
$args = wp_parse_args( $args, array(
|
||||
'titel' => '',
|
||||
'titel_tag' => 'h2',
|
||||
'erste_offen' => false,
|
||||
'schema' => true,
|
||||
) );
|
||||
if ( empty( $faq ) ) {
|
||||
return '';
|
||||
}
|
||||
$tag = in_array( $args['titel_tag'], array( 'h2', 'h3', 'h4', 'div' ), true ) ? $args['titel_tag'] : 'h2';
|
||||
|
||||
$html = skrift_faq_basis_css() . '<div class="skrift-faq">';
|
||||
if ( '' !== $args['titel'] ) {
|
||||
$html .= sprintf( '<%1$s class="skrift-faq__titel">%2$s</%1$s>', $tag, esc_html( $args['titel'] ) );
|
||||
}
|
||||
foreach ( array_values( $faq ) as $i => $e ) {
|
||||
$offen = ( $args['erste_offen'] && 0 === $i ) ? ' open' : '';
|
||||
$html .= '<details class="skrift-faq__eintrag"' . $offen . '>';
|
||||
$html .= '<summary class="skrift-faq__frage">' . esc_html( $e['frage'] ) . '</summary>';
|
||||
$html .= '<div class="skrift-faq__antwort">' . wp_kses_post( wpautop( do_shortcode( $e['antwort'] ?? '' ) ) ) . '</div>';
|
||||
$html .= '</details>';
|
||||
}
|
||||
|
||||
$html .= '</div>';
|
||||
|
||||
if ( $args['schema'] ) {
|
||||
$html .= skrift_faq_schema( $faq );
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
function skrift_kurzantwort_html( $post_id = 0 ) {
|
||||
$post_id = $post_id ? (int) $post_id : get_the_ID();
|
||||
$text = (string) get_post_meta( $post_id, 'kurzantwort', true );
|
||||
if ( '' === trim( $text ) ) {
|
||||
return '';
|
||||
}
|
||||
return '<div class="skrift-kurzantwort">' . wp_kses_post( wpautop( do_shortcode( $text ) ) ) . '</div>';
|
||||
}
|
||||
|
||||
/* Shortcodes, z. B. fuer das Elementor-Shortcode-Widget oder klassische Themes */
|
||||
|
||||
add_shortcode( 'skrift_faq', function ( $atts ) {
|
||||
$atts = shortcode_atts( array(
|
||||
'titel' => '',
|
||||
'erste_offen' => '0',
|
||||
'schema' => '1',
|
||||
'post_id' => 0,
|
||||
), $atts, 'skrift_faq' );
|
||||
return skrift_faq_html( skrift_faq_eintraege( $atts['post_id'] ), array(
|
||||
'titel' => $atts['titel'],
|
||||
'erste_offen' => '1' === (string) $atts['erste_offen'],
|
||||
'schema' => '1' === (string) $atts['schema'],
|
||||
) );
|
||||
} );
|
||||
|
||||
add_shortcode( 'skrift_kurzantwort', function ( $atts ) {
|
||||
$atts = shortcode_atts( array( 'post_id' => 0 ), $atts, 'skrift_kurzantwort' );
|
||||
return skrift_kurzantwort_html( $atts['post_id'] );
|
||||
} );
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* 4. Elementor-Widgets: Skrift FAQ und Skrift Kurzantwort
|
||||
* Einmal ins Single-Post-Template (Theme Builder) setzen, dann zeigt
|
||||
* jeder Beitrag automatisch seine eigenen Fragen.
|
||||
* --------------------------------------------------------------------- */
|
||||
|
||||
function skrift_elementor_bearbeitungsmodus() {
|
||||
if ( ! class_exists( '\Elementor\Plugin' ) ) {
|
||||
return false;
|
||||
}
|
||||
$e = \Elementor\Plugin::$instance;
|
||||
if ( isset( $e->editor ) && $e->editor->is_edit_mode() ) {
|
||||
return true;
|
||||
}
|
||||
return isset( $e->preview ) && $e->preview->is_preview_mode();
|
||||
}
|
||||
|
||||
add_action( 'elementor/widgets/register', function ( $widgets_manager ) {
|
||||
|
||||
if ( ! class_exists( '\Elementor\Widget_Base' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'Skrift_FAQ_Widget' ) ) {
|
||||
|
||||
class Skrift_FAQ_Widget extends \Elementor\Widget_Base {
|
||||
|
||||
public function get_name() {
|
||||
return 'skrift_faq';
|
||||
}
|
||||
|
||||
public function get_title() {
|
||||
return 'Skrift FAQ';
|
||||
}
|
||||
|
||||
public function get_icon() {
|
||||
return 'eicon-accordion';
|
||||
}
|
||||
|
||||
public function get_categories() {
|
||||
return array( 'general' );
|
||||
}
|
||||
|
||||
public function get_keywords() {
|
||||
return array( 'faq', 'fragen', 'skrift', 'akkordeon', 'umschalter', 'toggle' );
|
||||
}
|
||||
|
||||
protected function register_controls() {
|
||||
$C = '\Elementor\Controls_Manager';
|
||||
|
||||
$this->start_controls_section( 'inhalt', array( 'label' => 'Inhalt' ) );
|
||||
$this->add_control( 'hinweis', array(
|
||||
'type' => $C::RAW_HTML,
|
||||
'raw' => 'Fragen und Antworten kommen aus dem Meta-Feld <code>faq</code> des jeweiligen Beitrags.',
|
||||
) );
|
||||
$this->add_control( 'titel', array(
|
||||
'label' => 'Ueberschrift',
|
||||
'type' => $C::TEXT,
|
||||
'default' => 'Häufige Fragen',
|
||||
) );
|
||||
$this->add_control( 'titel_tag', array(
|
||||
'label' => 'HTML-Tag der Ueberschrift',
|
||||
'type' => $C::SELECT,
|
||||
'default' => 'h2',
|
||||
'options' => array( 'h2' => 'H2', 'h3' => 'H3', 'h4' => 'H4', 'div' => 'div' ),
|
||||
) );
|
||||
$this->add_control( 'erste_offen', array(
|
||||
'label' => 'Erste Frage geoeffnet',
|
||||
'type' => $C::SWITCHER,
|
||||
'default' => '',
|
||||
) );
|
||||
$this->add_control( 'schema', array(
|
||||
'label' => 'FAQ-Schema ausgeben',
|
||||
'type' => $C::SWITCHER,
|
||||
'default' => 'yes',
|
||||
) );
|
||||
$this->end_controls_section();
|
||||
|
||||
$this->start_controls_section( 'stil_titel', array( 'label' => 'Ueberschrift', 'tab' => $C::TAB_STYLE ) );
|
||||
$this->add_group_control( \Elementor\Group_Control_Typography::get_type(), array(
|
||||
'name' => 'titel_typo',
|
||||
'selector' => '{{WRAPPER}} .skrift-faq__titel',
|
||||
) );
|
||||
$this->add_control( 'titel_farbe', array(
|
||||
'label' => 'Farbe',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__titel' => 'color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_responsive_control( 'titel_abstand', array(
|
||||
'label' => 'Abstand darunter',
|
||||
'type' => $C::SLIDER,
|
||||
'size_units' => array( 'px', 'em' ),
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__titel' => 'margin-bottom: {{SIZE}}{{UNIT}};' ),
|
||||
) );
|
||||
$this->end_controls_section();
|
||||
|
||||
$this->start_controls_section( 'stil_frage', array( 'label' => 'Frage', 'tab' => $C::TAB_STYLE ) );
|
||||
$this->add_group_control( \Elementor\Group_Control_Typography::get_type(), array(
|
||||
'name' => 'frage_typo',
|
||||
'selector' => '{{WRAPPER}} .skrift-faq__frage',
|
||||
) );
|
||||
$this->add_control( 'frage_farbe', array(
|
||||
'label' => 'Farbe',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__frage' => 'color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_control( 'frage_farbe_offen', array(
|
||||
'label' => 'Farbe geoeffnet',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__eintrag[open] .skrift-faq__frage' => 'color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_control( 'frage_hintergrund', array(
|
||||
'label' => 'Hintergrund',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__frage' => 'background-color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_responsive_control( 'frage_innenabstand', array(
|
||||
'label' => 'Innenabstand',
|
||||
'type' => $C::DIMENSIONS,
|
||||
'size_units' => array( 'px', 'em' ),
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__frage' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ),
|
||||
) );
|
||||
$this->end_controls_section();
|
||||
|
||||
$this->start_controls_section( 'stil_antwort', array( 'label' => 'Antwort', 'tab' => $C::TAB_STYLE ) );
|
||||
$this->add_group_control( \Elementor\Group_Control_Typography::get_type(), array(
|
||||
'name' => 'antwort_typo',
|
||||
'selector' => '{{WRAPPER}} .skrift-faq__antwort',
|
||||
) );
|
||||
$this->add_control( 'antwort_farbe', array(
|
||||
'label' => 'Farbe',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__antwort' => 'color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_responsive_control( 'antwort_innenabstand', array(
|
||||
'label' => 'Innenabstand',
|
||||
'type' => $C::DIMENSIONS,
|
||||
'size_units' => array( 'px', 'em' ),
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__antwort' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ),
|
||||
) );
|
||||
$this->end_controls_section();
|
||||
|
||||
$this->start_controls_section( 'stil_eintrag', array( 'label' => 'Eintrag', 'tab' => $C::TAB_STYLE ) );
|
||||
$this->add_group_control( \Elementor\Group_Control_Border::get_type(), array(
|
||||
'name' => 'eintrag_rahmen',
|
||||
'selector' => '{{WRAPPER}} .skrift-faq__eintrag',
|
||||
) );
|
||||
$this->add_control( 'eintrag_radius', array(
|
||||
'label' => 'Eckenradius',
|
||||
'type' => $C::DIMENSIONS,
|
||||
'size_units' => array( 'px' ),
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__eintrag' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow: hidden;' ),
|
||||
) );
|
||||
$this->add_control( 'eintrag_hintergrund', array(
|
||||
'label' => 'Hintergrund',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__eintrag' => 'background-color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_responsive_control( 'eintrag_abstand', array(
|
||||
'label' => 'Abstand zwischen Eintraegen',
|
||||
'type' => $C::SLIDER,
|
||||
'size_units' => array( 'px', 'em' ),
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-faq__eintrag + .skrift-faq__eintrag' => 'margin-top: {{SIZE}}{{UNIT}};' ),
|
||||
) );
|
||||
$this->end_controls_section();
|
||||
}
|
||||
|
||||
protected function render() {
|
||||
$s = $this->get_settings_for_display();
|
||||
$faq = skrift_faq_eintraege();
|
||||
$bearbeiten = skrift_elementor_bearbeitungsmodus();
|
||||
|
||||
// Im Theme-Builder-Template gibt es keinen Beitrag mit FAQ,
|
||||
// deshalb dort Platzhalter zum Gestalten.
|
||||
if ( empty( $faq ) && $bearbeiten ) {
|
||||
$faq = array(
|
||||
array( 'frage' => 'Beispielfrage aus dem Feld faq', 'antwort' => 'Im Beitrag erscheinen hier die Antworten aus dem Meta-Feld faq.' ),
|
||||
array( 'frage' => 'Zweite Beispielfrage', 'antwort' => 'Die Gestaltung legen Sie hier im Widget fest, sie gilt fuer alle Beitraege.' ),
|
||||
array( 'frage' => 'Dritte Beispielfrage', 'antwort' => 'Beitraege ohne FAQ zeigen an dieser Stelle nichts an.' ),
|
||||
);
|
||||
}
|
||||
|
||||
echo skrift_faq_html( $faq, array( // phpcs:ignore WordPress.Security.EscapeOutput
|
||||
'titel' => (string) ( $s['titel'] ?? '' ),
|
||||
'titel_tag' => (string) ( $s['titel_tag'] ?? 'h2' ),
|
||||
'erste_offen' => 'yes' === ( $s['erste_offen'] ?? '' ),
|
||||
'schema' => 'yes' === ( $s['schema'] ?? '' ) && ! $bearbeiten,
|
||||
) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'Skrift_Kurzantwort_Widget' ) ) {
|
||||
|
||||
class Skrift_Kurzantwort_Widget extends \Elementor\Widget_Base {
|
||||
|
||||
public function get_name() {
|
||||
return 'skrift_kurzantwort';
|
||||
}
|
||||
|
||||
public function get_title() {
|
||||
return 'Skrift Kurzantwort';
|
||||
}
|
||||
|
||||
public function get_icon() {
|
||||
return 'eicon-text';
|
||||
}
|
||||
|
||||
public function get_categories() {
|
||||
return array( 'general' );
|
||||
}
|
||||
|
||||
public function get_keywords() {
|
||||
return array( 'kurzantwort', 'skrift', 'zusammenfassung', 'box' );
|
||||
}
|
||||
|
||||
protected function register_controls() {
|
||||
$C = '\Elementor\Controls_Manager';
|
||||
|
||||
$this->start_controls_section( 'inhalt', array( 'label' => 'Inhalt' ) );
|
||||
$this->add_control( 'hinweis', array(
|
||||
'type' => $C::RAW_HTML,
|
||||
'raw' => 'Der Text kommt aus dem Meta-Feld <code>kurzantwort</code>. Preis-Shortcodes darin werden aufgeloest.',
|
||||
) );
|
||||
$this->end_controls_section();
|
||||
|
||||
$this->start_controls_section( 'stil_box', array( 'label' => 'Box', 'tab' => $C::TAB_STYLE ) );
|
||||
$this->add_group_control( \Elementor\Group_Control_Typography::get_type(), array(
|
||||
'name' => 'box_typo',
|
||||
'selector' => '{{WRAPPER}} .skrift-kurzantwort',
|
||||
) );
|
||||
$this->add_control( 'box_farbe', array(
|
||||
'label' => 'Textfarbe',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-kurzantwort' => 'color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_control( 'box_hintergrund', array(
|
||||
'label' => 'Hintergrund',
|
||||
'type' => $C::COLOR,
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-kurzantwort' => 'background-color: {{VALUE}};' ),
|
||||
) );
|
||||
$this->add_group_control( \Elementor\Group_Control_Border::get_type(), array(
|
||||
'name' => 'box_rahmen',
|
||||
'selector' => '{{WRAPPER}} .skrift-kurzantwort',
|
||||
) );
|
||||
$this->add_control( 'box_radius', array(
|
||||
'label' => 'Eckenradius',
|
||||
'type' => $C::DIMENSIONS,
|
||||
'size_units' => array( 'px' ),
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-kurzantwort' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ),
|
||||
) );
|
||||
$this->add_responsive_control( 'box_innenabstand', array(
|
||||
'label' => 'Innenabstand',
|
||||
'type' => $C::DIMENSIONS,
|
||||
'size_units' => array( 'px', 'em' ),
|
||||
'selectors' => array( '{{WRAPPER}} .skrift-kurzantwort' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ),
|
||||
) );
|
||||
$this->end_controls_section();
|
||||
}
|
||||
|
||||
protected function render() {
|
||||
$html = skrift_kurzantwort_html();
|
||||
if ( '' === $html && skrift_elementor_bearbeitungsmodus() ) {
|
||||
$html = '<div class="skrift-kurzantwort"><p>Platzhalter: Hier erscheint die Kurzantwort des jeweiligen Beitrags.</p></div>';
|
||||
}
|
||||
echo $html; // phpcs:ignore WordPress.Security.EscapeOutput
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$widgets_manager->register( new Skrift_FAQ_Widget() );
|
||||
$widgets_manager->register( new Skrift_Kurzantwort_Widget() );
|
||||
} );
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
-460,
|
||||
100
|
||||
],
|
||||
"id": "91d71cf1-2650-4e1a-a053-9e01f04cb78a",
|
||||
"id": "793c9880-e989-44d5-b514-d6850b64fd2e",
|
||||
"name": "Manuell starten"
|
||||
},
|
||||
{
|
||||
@@ -25,9 +25,9 @@
|
||||
-460,
|
||||
280
|
||||
],
|
||||
"id": "b8826586-3f30-40f9-9f4d-3566606a9b3a",
|
||||
"id": "0bb95de2-96dd-4f8b-af1e-3bab20eca241",
|
||||
"name": "Webhook Start",
|
||||
"webhookId": "7ed025cf-5099-4378-a2d2-51fd49e119af"
|
||||
"webhookId": "53c83399-7059-4816-8f7c-c606015c02c0"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
@@ -35,91 +35,91 @@
|
||||
"assignments": {
|
||||
"assignments": [
|
||||
{
|
||||
"id": "4b4628e5-2614-49aa-a5af-7c7d8e0c6c07",
|
||||
"id": "f161eded-c23e-4d60-9d8b-d4db483ec3d9",
|
||||
"name": "nw_base",
|
||||
"value": "https://app.neuronwriter.com/neuron-api/0.5/writer",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "664c1556-dec1-4d5d-9652-e891ebf08b26",
|
||||
"id": "0544c6b7-e388-4bb4-b418-2dc97bc56bb6",
|
||||
"name": "gitea_base",
|
||||
"value": "http://gitea:3000",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "d8cfbc45-e4f2-4160-89db-a5400c808315",
|
||||
"id": "46b15bb0-7e1a-48f5-addb-e8ca1a46491a",
|
||||
"name": "gitea_owner",
|
||||
"value": "lucas.orth",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "2ff01e0d-dbc6-403d-84d4-59ab22d9a08c",
|
||||
"id": "46eb7849-83d0-4cd2-b978-6a49c4ddb31e",
|
||||
"name": "gitea_repo",
|
||||
"value": "Skrift-Auto-Article",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "d40df7d1-29ad-4a1b-b67f-4fa1715b9604",
|
||||
"id": "84f7d295-04fa-4f95-b723-98f0dc1a042b",
|
||||
"name": "branch",
|
||||
"value": "main",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "181b4931-53cb-4b3d-93df-4fc681901e05",
|
||||
"id": "1bd8cf46-e184-47c5-897a-aa4b4d08d591",
|
||||
"name": "artikel_ordner",
|
||||
"value": "artikel",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "f39283ce-c479-4566-aaab-4a2a1f58d802",
|
||||
"id": "1c6a8050-c17c-4635-b371-cc5a40fda4e5",
|
||||
"name": "brief_ordner",
|
||||
"value": "briefe",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "f90a205e-fdc1-4079-bf9b-b4ee32663d00",
|
||||
"id": "9eb50d4b-0ac5-4bd9-8733-fe1bcb82b601",
|
||||
"name": "nachbessern_ordner",
|
||||
"value": "nachbessern",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "6ff168b7-4cb4-42be-990d-7193915a81da",
|
||||
"id": "91ec4a89-c907-403d-aaa4-77e074a85992",
|
||||
"name": "status_pfad",
|
||||
"value": "status-importe.json",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "9135d2b6-887e-4f75-b150-6c66bc83738b",
|
||||
"id": "7e6d86e6-4195-4cdd-b3b2-1ee1fceb9805",
|
||||
"name": "wp_base",
|
||||
"value": "https://skrift.de",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "4350f279-2b06-4b2d-98c8-66318a09c399",
|
||||
"id": "405fcf78-a5a0-4fb8-9f04-d8041906f2b3",
|
||||
"name": "score_ziel",
|
||||
"value": "={{ $json.body && $json.body.score_ziel ? Number($json.body.score_ziel) : 72 }}",
|
||||
"type": "number"
|
||||
},
|
||||
{
|
||||
"id": "0bd22beb-337c-4245-b702-182c6774474d",
|
||||
"id": "4e9becf4-a380-407b-b4b9-b8b821e2992f",
|
||||
"name": "pause_zwischen_artikeln",
|
||||
"value": 5,
|
||||
"type": "number"
|
||||
},
|
||||
{
|
||||
"id": "2a18eec7-58de-43d0-a2c2-7e6c6961f27a",
|
||||
"id": "11c7167c-f60e-47c6-9832-9ef0124628c2",
|
||||
"name": "elementor_ausgabe",
|
||||
"value": true,
|
||||
"value": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"id": "24a9e76c-f761-439a-a8b4-97092dff1814",
|
||||
"id": "0a4b7c2b-14f5-43cb-ae2a-64d30d58a1f4",
|
||||
"name": "faq_ueberschrift",
|
||||
"value": "Häufige Fragen",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "f75796f9-4e41-434e-812f-7edfd84cd248",
|
||||
"id": "debc59ab-4e8e-44de-80c2-334c15fc55ac",
|
||||
"name": "benachrichtigung_an",
|
||||
"value": "privat@lucas-orth.de",
|
||||
"type": "string"
|
||||
@@ -134,7 +134,7 @@
|
||||
-240,
|
||||
190
|
||||
],
|
||||
"id": "02d8abd1-fb76-472c-b763-a297cf9b3d9e",
|
||||
"id": "86f2b355-8a1a-4336-b2c9-1a2cbb0aa6f1",
|
||||
"name": "Konfiguration"
|
||||
},
|
||||
{
|
||||
@@ -159,7 +159,7 @@
|
||||
-20,
|
||||
190
|
||||
],
|
||||
"id": "b4f7e1e9-dc21-4f98-9271-bba61b1b1d39",
|
||||
"id": "144a0300-78e5-4f50-828c-0e0dc617947c",
|
||||
"name": "Artikelordner lesen",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -182,7 +182,7 @@
|
||||
200,
|
||||
190
|
||||
],
|
||||
"id": "70da53d6-0889-4d9e-8c79-268aeab7c55f",
|
||||
"id": "03942d18-af94-439b-89a9-d9734d845f83",
|
||||
"name": "Artikeldateien filtern"
|
||||
},
|
||||
{
|
||||
@@ -196,7 +196,7 @@
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"id": "d8907dfa-944b-4e3c-826b-04ea4aa3a690",
|
||||
"id": "dd545030-181b-40c1-ba1c-563e93f9cdf9",
|
||||
"leftValue": "={{ $json.leer === true }}",
|
||||
"rightValue": "",
|
||||
"operator": {
|
||||
@@ -217,7 +217,7 @@
|
||||
420,
|
||||
190
|
||||
],
|
||||
"id": "cee6dd86-6638-4139-9cbe-a9b2f1c010db",
|
||||
"id": "ac2420c7-c498-4e3e-a26e-542f7d585a35",
|
||||
"name": "Artikel vorhanden?"
|
||||
},
|
||||
{
|
||||
@@ -228,7 +228,7 @@
|
||||
640,
|
||||
40
|
||||
],
|
||||
"id": "762e3de3-d0dc-4f7a-b33f-575329df610e",
|
||||
"id": "1f77ee2a-d8e9-4bcf-9ac9-5f1c1772d5ac",
|
||||
"name": "Nichts zu tun"
|
||||
},
|
||||
{
|
||||
@@ -244,7 +244,7 @@
|
||||
640,
|
||||
320
|
||||
],
|
||||
"id": "56d2a5ce-4069-4bb0-8fc7-9ea81aaecf1d",
|
||||
"id": "11279052-fb96-4d7b-b03a-4a64b524ab30",
|
||||
"name": "Artikel nacheinander"
|
||||
},
|
||||
{
|
||||
@@ -268,7 +268,7 @@
|
||||
900,
|
||||
420
|
||||
],
|
||||
"id": "cffa46f3-dcec-4165-bedc-c0258ff786d5",
|
||||
"id": "d36af43a-e39d-4e20-9ef8-00101a0dfef5",
|
||||
"name": "Artikeldatei laden",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -292,7 +292,7 @@
|
||||
900,
|
||||
640
|
||||
],
|
||||
"id": "3ad8a166-e94f-40d0-97dc-c66efe7315cc",
|
||||
"id": "49f78b05-7b28-4ca6-be18-fb0fb27cfcb9",
|
||||
"name": "Fehler Artikeldatei",
|
||||
"onError": "continueRegularOutput"
|
||||
},
|
||||
@@ -318,7 +318,7 @@
|
||||
1120,
|
||||
420
|
||||
],
|
||||
"id": "7bcc8532-384b-4b80-bde5-5019b8b13067",
|
||||
"id": "88ea6484-2c70-4e73-870f-404eb5d43676",
|
||||
"name": "Brief laden",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -338,7 +338,7 @@
|
||||
1340,
|
||||
420
|
||||
],
|
||||
"id": "573a808f-5d24-4aec-adc3-31b5c1710e2d",
|
||||
"id": "d0f641c2-78a7-4b25-addb-05044edbed6e",
|
||||
"name": "Artikel pruefen"
|
||||
},
|
||||
{
|
||||
@@ -368,7 +368,7 @@
|
||||
1560,
|
||||
420
|
||||
],
|
||||
"id": "ba5aeeaa-78b2-4cd4-9df1-eb5709214071",
|
||||
"id": "a7eb667d-7eec-4a65-8d90-206084368755",
|
||||
"name": "Score ermitteln",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -392,7 +392,7 @@
|
||||
1560,
|
||||
640
|
||||
],
|
||||
"id": "98617eeb-9cca-416e-b31e-3f72118972d7",
|
||||
"id": "902fc43d-9265-43ac-9c0b-a75a9c7da079",
|
||||
"name": "Fehler Score",
|
||||
"onError": "continueRegularOutput"
|
||||
},
|
||||
@@ -407,7 +407,7 @@
|
||||
1780,
|
||||
420
|
||||
],
|
||||
"id": "bbb33e59-c2e0-4ace-9dd2-e1e75d9859bb",
|
||||
"id": "8e45bb62-1738-4149-bd65-96b671fc3186",
|
||||
"name": "Score auswerten"
|
||||
},
|
||||
{
|
||||
@@ -421,7 +421,7 @@
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"id": "160a4ec1-ada5-45fa-860e-77a612991f75",
|
||||
"id": "b6a9240e-c1a2-4178-ae65-05534281a1a9",
|
||||
"leftValue": "={{ $json.bestanden }}",
|
||||
"rightValue": "",
|
||||
"operator": {
|
||||
@@ -442,7 +442,7 @@
|
||||
2000,
|
||||
420
|
||||
],
|
||||
"id": "83cba8ad-255b-4065-9bac-486c22473d2b",
|
||||
"id": "d240d88f-009d-423b-a781-6fd6317f0c99",
|
||||
"name": "Score erreicht?"
|
||||
},
|
||||
{
|
||||
@@ -456,7 +456,7 @@
|
||||
2220,
|
||||
640
|
||||
],
|
||||
"id": "7443696e-d930-428a-9016-a8157d1a3c6e",
|
||||
"id": "3dfd0f0e-f104-44d2-a44b-3cd7705d4833",
|
||||
"name": "Fehlende Begriffe ermitteln"
|
||||
},
|
||||
{
|
||||
@@ -481,7 +481,7 @@
|
||||
2440,
|
||||
640
|
||||
],
|
||||
"id": "4a19ef5f-785d-4d1b-a34b-95a56db54173",
|
||||
"id": "2320c737-09a9-4d44-8e70-9be83b3d2008",
|
||||
"name": "Nachbesserung vorhanden?",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -501,7 +501,7 @@
|
||||
2660,
|
||||
640
|
||||
],
|
||||
"id": "8e776ef8-83c0-4252-b1df-0988dcac30df",
|
||||
"id": "ce049aa8-6b87-4fd3-be30-ff5e9ae85e88",
|
||||
"name": "Nachbesserung vorbereiten"
|
||||
},
|
||||
{
|
||||
@@ -531,7 +531,7 @@
|
||||
2880,
|
||||
640
|
||||
],
|
||||
"id": "eedf1218-7b12-4dc9-b36c-3cd1845aadc7",
|
||||
"id": "e16e2245-e642-42f3-91e1-1149d52dd502",
|
||||
"name": "Nachbesserung committen",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -555,7 +555,7 @@
|
||||
2880,
|
||||
860
|
||||
],
|
||||
"id": "f2e2311e-23fe-4de3-825e-2520bea60aa6",
|
||||
"id": "88172a57-71cf-4c76-a148-3e625df08e72",
|
||||
"name": "Fehler Nachbesserung",
|
||||
"onError": "continueRegularOutput"
|
||||
},
|
||||
@@ -570,7 +570,7 @@
|
||||
3100,
|
||||
640
|
||||
],
|
||||
"id": "e73f8277-d65b-4ae0-8632-38cca861107f",
|
||||
"id": "3d34a3d6-1ce3-41a2-aa66-b9e5d9065708",
|
||||
"name": "Nachbesserung gemerkt"
|
||||
},
|
||||
{
|
||||
@@ -600,7 +600,7 @@
|
||||
2220,
|
||||
240
|
||||
],
|
||||
"id": "7b29edb4-7203-4272-8294-28bc65b91b43",
|
||||
"id": "8bd24b62-3161-4596-9dc0-9c73a434ffe8",
|
||||
"name": "Revision zu NeuronWriter",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -624,7 +624,7 @@
|
||||
2220,
|
||||
60
|
||||
],
|
||||
"id": "de95f5b3-cb3e-4bb4-91d0-3ce9c431e3f8",
|
||||
"id": "295a6ba5-75f4-4807-8090-23720da69936",
|
||||
"name": "Fehler Revision",
|
||||
"onError": "continueRegularOutput"
|
||||
},
|
||||
@@ -650,7 +650,7 @@
|
||||
2440,
|
||||
240
|
||||
],
|
||||
"id": "95d79724-0654-4883-bb8a-879293613b5c",
|
||||
"id": "01befefc-e4ef-48a5-943f-6aa732736c99",
|
||||
"name": "Beitrag vorhanden?",
|
||||
"credentials": {
|
||||
"httpBasicAuth": {
|
||||
@@ -684,7 +684,7 @@
|
||||
2660,
|
||||
240
|
||||
],
|
||||
"id": "2965f100-55d5-4a5c-b320-ae4d63906c5a",
|
||||
"id": "70e77372-0d3f-4c68-815b-ddb13d7f18e8",
|
||||
"name": "Kategorie suchen",
|
||||
"credentials": {
|
||||
"httpBasicAuth": {
|
||||
@@ -707,7 +707,7 @@
|
||||
2880,
|
||||
240
|
||||
],
|
||||
"id": "09fa5259-508e-466d-9125-8f4d130beb63",
|
||||
"id": "a0b6cc70-8253-4317-af8c-52da2a11d384",
|
||||
"name": "Kategorie pruefen"
|
||||
},
|
||||
{
|
||||
@@ -721,7 +721,7 @@
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"id": "a20d73bb-35db-4ecf-82d0-b62020fb9f94",
|
||||
"id": "88bdb3bb-b27e-4f62-a3e3-81ff95173268",
|
||||
"leftValue": "={{ $json.kategorie_fehlt }}",
|
||||
"rightValue": "",
|
||||
"operator": {
|
||||
@@ -742,7 +742,7 @@
|
||||
3100,
|
||||
240
|
||||
],
|
||||
"id": "923b0aac-5ca7-492b-a5c9-391acdce69d4",
|
||||
"id": "fd48f6d4-961a-4219-a245-55582aefbbce",
|
||||
"name": "Kategorie anlegen?"
|
||||
},
|
||||
{
|
||||
@@ -772,7 +772,7 @@
|
||||
3320,
|
||||
140
|
||||
],
|
||||
"id": "fcdb245e-5788-4cb7-878c-98bfa4dd2db4",
|
||||
"id": "4a56f882-d5f3-463c-aaa3-c94414f8c214",
|
||||
"name": "Kategorie anlegen",
|
||||
"credentials": {
|
||||
"httpBasicAuth": {
|
||||
@@ -795,7 +795,7 @@
|
||||
3540,
|
||||
240
|
||||
],
|
||||
"id": "09202e3f-4ace-4a1b-9eca-cb4b9ce3c3e4",
|
||||
"id": "4f8157e0-d898-49dd-a112-863e63ffa550",
|
||||
"name": "Kategorie festlegen"
|
||||
},
|
||||
{
|
||||
@@ -809,7 +809,7 @@
|
||||
3760,
|
||||
240
|
||||
],
|
||||
"id": "2fb8e360-a7b5-409c-8688-5aa04851cc75",
|
||||
"id": "fdb757fc-b0bc-4def-8a93-0e679a669b9e",
|
||||
"name": "WordPress-Body bauen"
|
||||
},
|
||||
{
|
||||
@@ -839,7 +839,7 @@
|
||||
3980,
|
||||
240
|
||||
],
|
||||
"id": "614cf4f3-11a5-44c0-9342-ed36827cd5f0",
|
||||
"id": "af5dc8ab-bcae-4b0c-975e-e7535ab616f4",
|
||||
"name": "Beitrag anlegen oder aktualisieren",
|
||||
"credentials": {
|
||||
"httpBasicAuth": {
|
||||
@@ -862,7 +862,7 @@
|
||||
4200,
|
||||
240
|
||||
],
|
||||
"id": "3ad3d285-d1cf-4dc0-a2e2-bf3f95fd4c34",
|
||||
"id": "d1513f84-dd96-41dd-981d-068eb0e015bb",
|
||||
"name": "Ergebnis pruefen"
|
||||
},
|
||||
{
|
||||
@@ -893,7 +893,7 @@
|
||||
4420,
|
||||
240
|
||||
],
|
||||
"id": "a7caa3d3-a44b-4d3f-9d74-895ad99e8f5d",
|
||||
"id": "3039ffe1-f6a5-43e7-bd80-a7818a75f458",
|
||||
"name": "Cache leeren",
|
||||
"credentials": {
|
||||
"httpBasicAuth": {
|
||||
@@ -913,7 +913,7 @@
|
||||
4640,
|
||||
240
|
||||
],
|
||||
"id": "7b8662eb-1bf1-464f-a153-976c4bafb905",
|
||||
"id": "061fc5f3-7a21-4dc0-87bb-e1c789ca31fc",
|
||||
"name": "Importergebnis merken"
|
||||
},
|
||||
{
|
||||
@@ -927,9 +927,9 @@
|
||||
4860,
|
||||
420
|
||||
],
|
||||
"id": "e1588d91-d590-4092-b17b-62a0f4bd091d",
|
||||
"id": "92a3b5c9-ffb9-4db8-90b0-664c7a252f55",
|
||||
"name": "Pause Rate Limit",
|
||||
"webhookId": "c135194f-02f6-4034-a27a-80412f32e2d8"
|
||||
"webhookId": "6c1f5f05-129e-4a6f-88c2-18d3580177ac"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
@@ -942,7 +942,7 @@
|
||||
900,
|
||||
80
|
||||
],
|
||||
"id": "c3906d3f-17c2-44c4-ae4a-1fded6ecb063",
|
||||
"id": "b5e9fe9f-14ec-4ceb-9e90-dfc7a2157e04",
|
||||
"name": "Ergebnisse sammeln"
|
||||
},
|
||||
{
|
||||
@@ -967,7 +967,7 @@
|
||||
1120,
|
||||
80
|
||||
],
|
||||
"id": "65f716cc-6b5f-49fe-870c-43333ae12de6",
|
||||
"id": "0e50466e-1a53-4df6-9e69-6de44bc287a6",
|
||||
"name": "Statustabelle lesen",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -987,7 +987,7 @@
|
||||
1340,
|
||||
80
|
||||
],
|
||||
"id": "26726765-3fb4-4a97-bd5f-b54e1b2acbcd",
|
||||
"id": "d1ff39f4-f404-4857-bb5d-43261f32299e",
|
||||
"name": "Statustabelle fortschreiben"
|
||||
},
|
||||
{
|
||||
@@ -1001,7 +1001,7 @@
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"id": "85e7ddc2-927d-4ffb-a25e-4da81fec7e0a",
|
||||
"id": "95cee571-76cd-4c6b-bdff-cbee60c28afc",
|
||||
"leftValue": "={{ $json.ueberspringen }}",
|
||||
"rightValue": "",
|
||||
"operator": {
|
||||
@@ -1022,7 +1022,7 @@
|
||||
1560,
|
||||
80
|
||||
],
|
||||
"id": "9a6ec416-dd7c-4904-bd56-3580d5bf6138",
|
||||
"id": "627c4837-2d98-430f-9b81-ad04d9b671c7",
|
||||
"name": "Gab es Importe?"
|
||||
},
|
||||
{
|
||||
@@ -1052,7 +1052,7 @@
|
||||
1780,
|
||||
160
|
||||
],
|
||||
"id": "a3575c97-ef97-47f0-9c01-1d75df71c878",
|
||||
"id": "6de88f1b-0e69-4e99-bf3d-5ec74563da7d",
|
||||
"name": "Statustabelle schreiben",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
@@ -1076,7 +1076,7 @@
|
||||
1780,
|
||||
340
|
||||
],
|
||||
"id": "d4de1918-7f49-45b9-948a-d22ab2c36473",
|
||||
"id": "ae7ea0ae-b523-42a4-8716-6c1e183407e8",
|
||||
"name": "Fehler Statustabelle",
|
||||
"onError": "continueRegularOutput"
|
||||
},
|
||||
@@ -1091,7 +1091,7 @@
|
||||
2000,
|
||||
80
|
||||
],
|
||||
"id": "255f8dee-0294-47e3-aaea-fc094a423dfa",
|
||||
"id": "ab3897b8-80dc-4efe-99ec-fd7205a9017f",
|
||||
"name": "Meldung formulieren"
|
||||
},
|
||||
{
|
||||
@@ -1109,7 +1109,7 @@
|
||||
2220,
|
||||
80
|
||||
],
|
||||
"id": "e19c27c0-de80-4318-b965-cf2eb86d1824",
|
||||
"id": "3856017f-eb4c-463b-ac03-af1d33e478c1",
|
||||
"name": "Benachrichtigung",
|
||||
"disabled": true,
|
||||
"notes": "SMTP-Credential zuweisen, Absender eintragen, dann aktivieren."
|
||||
|
||||
Reference in New Issue
Block a user