2016-05-15 11 views
0

私は自分の使い方のためにプラグインを開発していますが、更新、エラー、情報などの上に表示される迷惑なWordPressメッセージをすべて取り除きたいと思います。プラグインのメニューページがPHPによって生成されていることを、私は私の研究によると、PHPのコードでこれらのメッセージを削除しようとした本である:親と子要素を削除します。

function remove_core_updates(){ 

    global $wp_version;return(object) array('last_checked'=> time(),'version_checked'=> $wp_version,); 

} 

add_filter('pre_site_transient_update_core','remove_core_updates'); 
add_filter('pre_site_transient_update_plugins','remove_core_updates'); 
add_filter('pre_site_transient_update_themes','remove_core_updates'); 

私は私の プラグインのPHPファイルの先頭にこれを追加し、削除する必要があります通知は表示されますが、一部のプラグインのエラーメッセージが表示されます。上記とは別に、ダッシュボードでアクセスするすべてのメニューページの更新通知を削除します。これは私が望んでいない。私は、メニューのページに追加最初のhtml要素が javascript関数、外部スタイルシートへのlinkであることを考えると

function remove_wp_messages(selector) { 

    var child = document.querySelector(selector), 
     parent = child.parentNode, 
     index = Array.prototype.indexOf.call(parent.children, child); 

    for (var i = 1; i < Number(index + 1); i++) { 

     var elements = document.querySelector("#wpbody-content > :nth-child(" + i + ")"); 

     while (elements.firstChild) { 

      elements.removeChild(elements.firstChild); 
      elements.style.display = "none"; 

     } 
    } 
} 

window.onload = remove_wp_messages("#wpbody-content > link"); 

:回避策として

、私は私が欲しいものを行う関数を書きましたreturnsのインデックスはlinkであり、エレメントからすべての子ノードをlinkまで削除するので、ループになります。ここに問題がありますが、私は子供の要素を削除するだけでなく、親も同様に私のプラグインの内容を上回る通知を削除することに等しくなりたいです。これにより

elements.style.display = "none"; 

elements.remove(); 

運を私は交換してみました。私が理解していないことは、親要素が隠されていることですが、私はremove()と置き換えて通知の代わりにコンテンツを削除します。どうして?私はphpとjavascriptの両方の提案にオープンしています。


SOLUTION

は@PetrSr答えによると、私のコードは次のようになります。

function remove_wp_messages(selector) { 

    var child = document.querySelector(selector), 
     parent = child.parentNode, 
     index = Array.prototype.indexOf.call(parent.children, child); 

    for (var i = Number(index); i > 0; i--) { 

     document.querySelector("#wpbody-content > :nth-child(" + i + ")").remove(); 

    } 
} 

非常に簡単。後方、このような要素をループ

答えて

1

はあなたの問題を解決する必要があります

for (var i = Number(index); i > 0; i--) { 
    //your code 
} 

あなたはフォワードループDOM要素にあなたが行った方法を削除することはできませんが、要素1を削除した後、要素2は最初のものになりますので。 2番目の要素を削除すると、実際に元の要素3を削除しています。等

+0

それはトリックでした!私のアプローチは完全に非論理的だった。 –

+0

'Number(index)'が 'Number(index);の後にセミコロンの代わりにカンマを使用しました。 –

関連する問題