$ wpdb-> get_results brechende Seite?

Ich versuche, eine Liste von Jahren, die Beiträge auf einer WordPress-Seite haben, mit einem “php in posts” -Plugin, das einen Shortcode hat, zu generieren. aber der Code, den ich benutze, scheint die Seite zu durchbrechen.

Was könnte das Problem hier sein?

[insert_php] $years = $wpdb->get_results( "SELECT YEAR(post_date) AS year FROM wp_posts WHERE post_type = 'results' AND post_status = 'publish' GROUP BY year DESC" ); foreach ( $years as $year ) { echo '

' . $year->year . '

'; } [/insert_php]

Solutions Collecting From Web of "$ wpdb-> get_results brechende Seite?"

Für mich wäre das Problem, ein Plugin zu verwenden, das evil() eval() , um string als PHP zu evaluieren;

Dieser Teil stammt aus dem PHP-Handbuch :

Vorsicht Das Konstrukt eval() ist sehr gefährlich, da es die Ausführung von beliebigem PHP-Code erlaubt. Seine Verwendung wird daher abgeraten. Wenn Sie sorgfältig überprüft haben, dass es keine andere Möglichkeit als die Verwendung dieses Konstrukts gibt, achten Sie besonders darauf, dass keine vom Benutzer bereitgestellten Daten in das System eingegeben werden, ohne es vorher ordnungsgemäß zu validieren.

Wahrscheinlich fehlt der global $wpdb , aber ich würde Ihnen empfehlen, stattdessen Ihren eigenen global $wpdb zu erstellen.

Beispiel:

 add_shortcode( 'tim_daniels_list', function( $atts = [], $content = '' ) { global $wpdb; $years = $wpdb->get_results( "SELECT YEAR(post_date) AS year FROM {$wpdb->posts} WHERE post_type = 'results' AND post_status = 'publish' GROUP BY year DESC" ); $html = ''; foreach ( (array) $years as $year ) { $html .= '

' . $year->year . '

'; } return $html; });