所以我一直在使用这个主题Vilan 从他们前面。除了这个主题,还有几个插件,其中一个是Revolution Slider. 我也在使用Bedrock 通过Roots. 我收到以下错误:
注意:wpdb::prepare的调用不正确。wpdb::prepare()的查询参数必须有占位符。有关详细信息,请参阅WordPress中的调试。(此消息是在版本3.9中添加的。)在/Applications/MAMP/htdocs/localppl/web/wp/wp-includes/functions中。php第3547行。
除了WordPress Gallery在任何时候以网格模式显示时都会在加载时卡住之外,我不会感到困扰。我发现错误来自旋转滑块,因为我将其关闭和打开,每当我这样做时,问题就会出现和消失。我试图追溯问题,发现一旦删除下面的代码,它就会正常工作。现在,我确定问题出在数据库调用上,但我不知道如何修复它(我将使用子主题替换过滤器)。
一旦删除prepare调用,它就可以正常工作,但我读到它是用来防止SQL注入的。即使如此,如果可能的话,我仍然想学习如何在使用它的同时解决这个问题。
if (is_plugin_active(\'revslider/revslider.php\')) {
global $wpdb;
$rs_table_name = $wpdb->prefix . "revslider_sliders";
$rs = $wpdb->get_results( $wpdb->prepare("SELECT id, title, alias FROM $rs_table_name ORDER BY id ASC LIMIT 999", \'\') );
$revsliders = array();
if ($rs) {
foreach ( $rs as $slider ) {
$revsliders[$slider->alias] = $slider->alias;
}
} else {
$revsliders["No sliders found"] = 0;
}
// Page header slideshow metabox
$meta_boxes[] = array(
// Meta box id, UNIQUE per meta box. Optional since 4.1.5
\'id\' => \'general_page_header_slideshow_meta\',
// Meta box title - Will appear at the drag and drop handle bar. Required.
\'title\' => __( \'Page Header Slideshow\', \'okthemes\' ),
// Post types, accept custom post types as well - DEFAULT is array(\'post\'). Optional.
\'pages\' => array( \'page\' ),
// Where the meta box appear: normal (default), advanced, side. Optional.
\'context\' => \'normal\',
// Order of meta box: high (default), low. Optional.
\'priority\' => \'high\',
// Auto save: true, false (default). Optional.
\'autosave\' => true,
// List of meta fields
\'fields\' => array(
array(
\'name\' => \'Page header slider\',
\'id\' => "{$prefix}page_header_slider",
\'desc\' => \'Enable/Disable page header slider.\',
\'std\' => 0,
\'type\' => \'checkbox\',
),
// SELECT BOX
array(
\'name\' => __( \'Select the page header slider\', \'okthemes\' ),
\'id\' => "{$prefix}page_header_slider_select",
\'type\' => \'select\',
// Array of \'value\' => \'Label\' pairs for select box
\'options\' => $revsliders,
// Select multiple values, optional. Default is false.
\'multiple\' => false,
\'std\' => \'\',
\'placeholder\' => __( \'Select a slider\', \'okthemes\' ),
),
),
);
} //end check for rev slider
最合适的回答,由SO网友:yaserso 整理而成
根据建议Milo, 我删除了prepare语句,它运行得很好:
$rs = $wpdb->get_results( "SELECT id, title, alias FROM $rs_table_name ORDER BY id ASC LIMIT 999" );
然后我来尝试通过一个子主题覆盖它。它最初添加到父主题中的筛选器中:
add_filter( \'rwmb_meta_boxes\', \'gg_register_meta_boxes\' );
我苦苦思索如何更换过滤器;简单地删除和添加另一个函数并不能解决这个问题,但我必须将remove\\u过滤器添加到动作挂钩中,以覆盖父主题函数:
after_setup_theme
.
我通过以下代码解决了这个问题:
// Change Parent Theme Features
add_action( \'after_setup_theme\', \'change_parent_theme_features\', 10 );
function change_parent_theme_features() {
remove_filter( \'rwmb_meta_boxes\', \'gg_register_meta_boxes\' );
}
最后,我将修改后的函数添加到上述过滤器中。