我想在进行Ajax调用时加载自定义侧栏,因此我找到了以下方法:
add_filter( \'loop_start\', \'my_sidebar_widget\', 25 );
但它甚至在媒体管理面板中也显示了侧边栏,所以我考虑这样做:
if( !is_admin() ) {
add_filter( \'loop_start\', \'my_sidebar_widget\', 25 );
}
但它仍然加载在媒体管理面板中,因此我尝试:
add_filter( \'loop_start\', \'my_sidebar_widget\', 25 );
if( is_admin() ) {
remove_filter( \'loop_start\', \'my_sidebar_widget\', 25 );
}
但这样,侧栏就不会加载到Ajax调用中。你知道怎么解决吗?
最合适的回答,由SO网友:Manolo 整理而成
is_admin()
退货true
如果您正在执行Ajax请求。这就是我的代码不起作用的原因。相反,我这样做了:
add_filter( \'loop_start\', \'my_sidebar_widget\', 25 );
function my_sidebar_widget() {
if ( is_active_sidebar( \'my_sidebar\' ) && (defined( \'DOING_AJAX\' ) && DOING_AJAX ) || !is_admin() ) {
echo \'<div id="my_sidebar">\';
dynamic_sidebar(\'my_sidebar\');
echo \'</div>\';
}
}
defined( \'DOING_AJAX\' ) && DOING_AJAX
如果正在执行Ajax调用,则返回true,并且
!is_admin
如果您没有执行Ajax请求,则可以使用。这样,它就不会显示在媒体管理面板中。