0

以下のコードは、wordpress ナビゲーション メニューのすべてのアンカー リンクをターゲットにして、新しい属性「data-foo」と値「bar」を設定します。特定のクラスのメニューのみを対象とするように変更するにはどうすればよいですか?

add_filter( 'walker_nav_menu_start_el', function( $item ) {

   $parts = explode( '>', $item );
   $out   = array ();    

   foreach ( $parts as $i => $part )
   {
      if ( 0 === strpos( $part, '<a ' ) ) // a start
         $out[ $i ] = $part . ' data-foo="bar"';
         else
         $out[ $i ] = $part;
   }

   return join( '>', $out );
});
4

1 に答える 1

0

コード内の「walker_nav_menu_start_el」は、定義済みの「フィルター」です。$get_body_class(className) を使用して、このクラスの要素のみにフィルターを適用できます。

$class = $get_body_class('yourClassNameHere');

add_filter( $class, function( $item ) {

   $parts = explode( '>', $item );
   $out   = array ();    

   foreach ( $parts as $i => $part )
   {
      if ( 0 === strpos( $part, '<a ' ) ) // a start
         $out[ $i ] = $part . ' data-foo="bar"';
         else
         $out[ $i ] = $part;
   }

   return join( '>', $out );
});
于 2013-08-13T00:15:16.633 に答える