我一直在研究解決方案,但我的邏輯還沒有完全到位。
我希望將字串 A 在多個位置(陣列中的位置)插入到字串 B 中。
位置變數陣列是一個 strpos() 回傳值 []。
字串 B 必須與自身連接,以便它包含原始字串,但在多個位置插入了新字串 A。
這是到目前為止的邏輯:
function add_submenu_back_item( $items, $args ){
if( 'top-menu' == $args->theme_location ){
$menu_item_back = '<a ><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5z"/>
</svg></a>';
$subMenuPos = strpos($items, 'sub-menu');
$new_items = '';
$arrayPos = strpos_all( $items, 'sub-menu' );
$offset = 10;
$values;
for ($i = 0; $i <= count($arrayPos) - 1; $i ) {
// $new_items = substr_replace($items, $menu_item_back, $arrayPos[$i] $offset, 0);
echo substr_replace($items, $menu_item_back, $arrayPos[$i] $offset, 0);
}
}
return ''; // testing mode, should be $new_items but doesnt seem to output the inserted value
}
add_filter( 'wp_nav_menu_items', 'add_submenu_back_item', 10, 2 );
我認為邏輯應該表達的內容:
- substr() 獲取當前的 startPos 和 endPos 以切出字串。
- 將插入值添加到 substr() 值的末尾。
- 如果我們已經有一個 substr() 值,那么將帶有插入值的新 substr() 添加到最后一個值。
- 重復這個邏輯直到 for 回圈結束。
我試圖將 $menu_item_back 插入 $menu_items。$items 是一個表示 HTML 選單導航的字串。
目前它正在回傳一個重復的串列 $menu_items。
uj5u.com熱心網友回復:
我決定在這個解決方案中使用 JavaScript。根據需要訪問 DOM 元素更容易,并且是解決此解決方案的更好方法,因為它是前端開發而不是服務器端開發。
代碼:
// create go-back element button
var goBackEl = document.createElement('li');
goBackEl.innerHTML = '<a href="#"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="#FFFFFF" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5z"/></svg></a>';
// add go-back button to sub-menu as the first child
submenuEl.prepend( goBackEl );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369586.html
