php - apply_filters 不回显无序列表中的列表项
问题描述
我正在使用 wordpressapply_filters
钩子来附加一个动作钩子。我的代码是在标签中的某些链接时回显列表ul
。(如果 woocommerce 处于活动状态)。
我的代码在这里
$loggedin_item = '<div>';
$loggedin_item .= $user_dp; //it works & its none of this questions business
$loggedin_item .= '<ul>';
apply_filters( 'after_user_loggedin_menu', $is_wc_active, $is_logged_in ); //its not working
$loggedin_item .= '</ul>';
$loggedin_item .= '</div>';
我的附件功能在这里。如果我使用 echo 它会在外面回显ul
,如果我使用 return 它不会回显任何东西
function wc_action_header( $is_wc_active, $is_logged_in ){
$wc_li = '';
if( $is_wc_active){
$my_account_url = get_permalink( get_option('woocommerce_myaccount_page_id') );
$wc_account_items = wc_get_account_menu_items();
foreach ($wc_account_items as $key => $value) {
$wc_li .= '<li><a href="' . $my_account_url . $key . '">'. esc_attr($value) .'</a></li>';
}
}
echo $wc_li;
}
并添加钩子
add_filter('after_user_loggedin_menu', array($this, 'wc_action_header' ), 10, 2);
解决方案
由于您将 HTML 存储在$loggedin_item
var 中,因此您需要将wc_action_header
输出添加到此 var。
$loggedin_item = '<div>';
$loggedin_item .= $user_dp; //it works & its none of this questions business
$loggedin_item .= '<ul>';
$output = '';
$output = apply_filters( 'after_user_loggedin_menu', $is_wc_active, $is_logged_in );
$loggedin_item.=$output;
$loggedin_item .= '</ul>';
$loggedin_item .= '</div>';
并更改echo $wc_li;
为return $wc_li;
您的wc_action_header
功能。
推荐阅读
- java - Redis在运行时获取命令不可预测的结果
- python - Tkinter 弹出命令
- html - 如何创建一个检查输入但不提交数据的 HTML 按钮?
- javascript - 看不到所有 javascript 日志消息
- apache - 在 Apache 中安装 SSL 时出错
- amazon-web-services - 在 user_data 提供者模板文件中访问 Terraform 变量
- css - Bootstrap 4轮播链接覆盖所有其他链接
- loops - Netlogo 中的刻度循环
- r - LDA 中的主题建模之后的下一步是什么
- c# - Websocket 服务器发送自发消息(没有来自客户端的请求)