Wie kann die Ausführung der Standardabfrage verhindert werden, während die Möglichkeit erhalten bleibt, WP_Query in der Vorlage zu verwenden?


7

PROBLEM: Ich versuche, die Ausführung der Standard-WordPress-Abfrage für eine benutzerdefinierte Kategorievorlage zu verhindern. Ich habe eine mögliche Lösung gefunden, aber es sieht so aus, als würde sie die Ausführung aller Post-Abfragen verhindern:

function _cancel_query( $query ) {
    if ( !is_admin() && !is_feed() && is_search() ) {
        $query = false;
    }
    return $query;
}
add_action( 'posts_request', '_cancel_query' );

Quelle: http://vadimk.com/2010/05/11/disable-wordpress-search-query/

'@ query-> is_main_query ()' funktioniert nicht mit der Aktion 'posts_request'. Gibt es eine elegante Möglichkeit, NUR die Standard-WordPress-Abfrage zu verhindern, sodass mein Code Beiträge abrufen kann, ohne nutzlose Vorgänge auszuführen?

WARUM: Ich muss vorgestellte Beiträge erhalten, dann eine feste Anzahl normaler Beiträge ohne doppelten Inhalt, was bedeutet, dass die Abfrage von Beiträgen von den Ergebnissen der vorgestellten Abfrage abhängt, da nicht garantiert werden kann, dass ich in der Abfrage von vorgestellten Beiträgen genügend vorgestellte Beiträge finde, um die vorgestellten Boxen zu füllen. Und nach all dem muss ich die AJAX-Paginierung hinzufügen - immer noch ohne doppelten Inhalt.

BEARBEITEN 2: Wenn Sie versuchen, WP_Query in 'pre_get_posts' auszuführen, wie von Rarst vorgeschlagen ( Wie kann die Ausführung der Standardabfrage verhindert werden, während die Fähigkeit zur Verwendung von WP_Query in der Vorlage erhalten bleibt? ):

"pre_get_posts wird ausgeführt, bevor WP_Query eingerichtet wurde. Einige Vorlagen-Tags und bedingte Funktionen, die auf WP_Query basieren, funktionieren nicht. Beispielsweise funktioniert is_front_page () nicht, obwohl is_home () funktioniert. In solchen Fällen müssen Sie direkt arbeiten mit den Abfragevariablen, die als Argument an den Hook pre_get_posts übergeben werden ($ query in Beispielen auf dieser Seite). "

Quelle: https://codex.wordpress.org/Class_Reference/WP_Query

WP_Query wird zu diesem Zeitpunkt vor der Hauptabfrage initialisiert. Um ein solches Ergebnis zu vermeiden (Check-out-Protokoll), müssen Sie es umbrechen:

if ($query->is_main_query()) {
    $args = array();
    $query = new WP_Query( $args );
}

LOG:

[30-Apr-2013 17:07:12 UTC] PHP Fatal error:  Maximum function nesting level of '100' reached, aborting! in C:\Users\serwis\Dropbox\www\XYZ\wp-includes\functions.php on line 2769

[30-Apr-2013 17:07:12 UTC] PHP Stack trace:

[30-Apr-2013 17:07:12 UTC] PHP   1. {main}() C:\Users\serwis\Dropbox\www\XYZ\index.php:0

[30-Apr-2013 17:07:12 UTC] PHP   2. require() C:\Users\serwis\Dropbox\www\XYZ\index.php:17

[30-Apr-2013 17:07:12 UTC] PHP   3. wp() C:\Users\serwis\Dropbox\www\XYZ\wp-blog-header.php:14

[30-Apr-2013 17:07:12 UTC] PHP   4. WP->main() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\functions.php:779

[30-Apr-2013 17:07:12 UTC] PHP   5. WP->query_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\class-wp.php:549

[30-Apr-2013 17:07:12 UTC] PHP   6. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\class-wp.php:485

[30-Apr-2013 17:07:12 UTC] PHP   7. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP   8. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP   9. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  10. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  11. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  12. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  13. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  14. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  15. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  16. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  17. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  18. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  19. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  20. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  21. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  22. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  23. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  24. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  25. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  26. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  27. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  28. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  29. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  30. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  31. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  32. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  33. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  34. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  35. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  36. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  37. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  38. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  39. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  40. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  41. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  42. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  43. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  44. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  45. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  46. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  47. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  48. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  49. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  50. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  51. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  52. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  53. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  54. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  55. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  56. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  57. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  58. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  59. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  60. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  61. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  62. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  63. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  64. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  65. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  66. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  67. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  68. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  69. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  70. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  71. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  72. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  73. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  74. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  75. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  76. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  77. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  78. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  79. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  80. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  81. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  82. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  83. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  84. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  85. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  86. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  87. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  88. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  89. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  90. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  91. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  92. do_action_ref_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1924

[30-Apr-2013 17:07:12 UTC] PHP  93. call_user_func_array() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  94. gs_pre_get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\plugin.php:487

[30-Apr-2013 17:07:12 UTC] PHP  95. WP_Query->__construct() C:\Users\serwis\Dropbox\www\XYZ\wp-content\themes\roots-XYZ\lib\custom.php:14

[30-Apr-2013 17:07:12 UTC] PHP  96. WP_Query->query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:3059

[30-Apr-2013 17:07:12 UTC] PHP  97. WP_Query->get_posts() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:2972

[30-Apr-2013 17:07:12 UTC] PHP  98. WP_Query->parse_query() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1922

[30-Apr-2013 17:07:12 UTC] PHP  99. absint() C:\Users\serwis\Dropbox\www\XYZ\wp-includes\query.php:1442

Antworten:


5

Das vollständige Abbrechen der Hauptabfrage ist ein Wahnsinn auf hoher Ebene, bei dem es sich um eine Unterklassenklasse handelt wp.

Ich würde:

  1. Einhaken pre_get_postsmit is_main_query()Scheck
  2. Führen Sie die empfohlene Abfrage (immer noch im Hook) aus und speichern Sie die Ergebnisse irgendwo
  3. Verwenden Sie diese Ergebnisse, um ausgeschlossene Beiträge für die Hauptabfrage festzulegen

Wenn ich Sie richtig verstehe, kann ich WP nicht daran hindern, eine Standardabfrage für eine Vorlage durchzuführen, ohne WP durcheinander zu bringen, ABER ich kann eine normale WP_query ausführen, bevor die Hauptabfrage abgeschlossen ist, und alles wird in Ordnung sein? Können Sie mir erklären, warum die Standardabfrage so wichtig ist, auch wenn die Kern-WP-Mechanik (Abrufen von Inhalten) funktioniert, bevor sie ausgeführt wird? (Ich bin nicht sehr vertraut mit WP Core, aber bereit zu lernen :))
Gniewomir Świechowski

Einfach ausgedrückt ist die Hauptabfrage gründlich mit dem WP-Kernladeprozess verbunden. Es ist relativ einfach, es zu modifizieren, aber der Versuch, es vollständig loszuwerden, ist böse und eine Technik, die in der Praxis nie angewendet wird. Es kann getan werden, es ist aus Sicht des Entwicklungsaufwands einfach nicht praktisch. Und ja - Sie können benutzerdefinierte Abfragen unabhängig voneinander ausführen, da sie die Hauptabfrage nicht beeinträchtigen (mit Ausnahme query_posts()einer, die nicht verwendet werden sollte). Seien Sie nur vorsichtig mit is_main_query()Überprüfungen, damit Ihre Änderungen auf das zutreffen, was sie sollten, und nicht auf alle Abfragen.
Rarst

Danke für die Antwort. Es war sehr hilfreich. Ich werde Ihren Ansatz versuchen, anstatt WP zu hacken :)
Gniewomir Świechowski

Ich werde darauf hinweisen, dass dieser Kommentar, seit er 2013 erstellt wurde, 2016 eher auf mittlerer Ebene verrückt wird. Ein Anwendungsfall für dieses Verhalten wäre ein Front-End, das nicht von PHP / HTML-Vorlagen, sondern von JavaScript gesteuert wird. Wenn die benötigten Bootstrap-Daten nicht mit der Standard-WP_Query übereinstimmen, kann dies für angemeldete Benutzer "unnötigen" Overhead bedeuten.
Herausgeber

9

Ich weiß, dass es möglicherweise etwas spät für eine Antwort ist, aber ich bin bei der Erstellung meines Testprojekts auf ein ähnliches Problem gestoßen. So habe ich es gelöst.

/* apply this filter only on relevant to you pages */
function mb_bail_main_wp_query( $sql, WP_Query $wpQuery ) {
    if ( $wpQuery->is_main_query() ) {
        /* prevent SELECT FOUND_ROWS() query*/
        $wpQuery->query_vars['no_found_rows'] = true;

        /* prevent post term and meta cache update queries */
        $wpQuery->query_vars['cache_results'] = false;

        return false;
    }
    return $sql;
}
add_filter( 'posts_request', 'mb_bail_main_wp_query', 10, 2 );

@AKTUALISIEREN:

Der Code wurde geändert, um die normale Funktion anstelle der anonymen Funktion zu verwenden, und der Code wurde als "false" anstelle von "SELECT 0 AS ID" zurückgegeben, da ein Dummy-leeres WP_Post-Objekt zurückgegeben wurde. Wenn Sie 'false' zurückgeben, wird $ wpdb-> get_results () vorzeitig beendet, sodass keine Abfrage erfolgt.


4
Es ist fast nie zu spät, denn die Antworten sind nicht nur für den Fragesteller. Könnten Sie bitte eine zusätzliche Erklärung hinzufügen? Es ist viel drin, zum Beispiel wegen der anonymen Funktion benötigt dieser Code PHP 5.3+.
Nicolai

Beachten Sie, dass das WP_Query-Objekt bereits als Referenz übergeben wurde, wie in der Dokumentation angegeben .
Aurovrata
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.