Php 未定义的属性:DOMDocument::$tagName
我在WP的debug.log文件中遇到以下错误 PHP注意:未定义属性:DOMDocument::$tagName in…/wp content/themes/theme name/libs/oi/functions.PHP,第441行Php 未定义的属性:DOMDocument::$tagName,php,wordpress,Php,Wordpress,我在WP的debug.log文件中遇到以下错误 PHP注意:未定义属性:DOMDocument::$tagName in…/wp content/themes/theme name/libs/oi/functions.PHP,第441行 function oi_display_hierarchy( $nav_menu, $args ) { if( ! is_single() ) { return $nav_menu; } $menuXML = n
function oi_display_hierarchy( $nav_menu, $args )
{
if( ! is_single() )
{
return $nav_menu;
}
$menuXML = new SimpleXMLElement( $nav_menu );
list($current) = $menuXML->xpath( "//li[contains(@class,'current-menu-parent')]" );
if( !empty( $current ) )
{
$node = dom_import_simplexml($current);
while($node)
{
$node = $node->parentNode;
if( $node->tagName == 'li' ) // 441 - The problem line
{
$classes = $node->getAttribute('class');
$node->setAttribute('class', $classes . ' current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor');
}
}
}
return str_replace('<?xml version="1.0"?>', '', $menuXML->asXML());
}
add_filter('wp_nav_menu', 'oi_display_hierarchy', 11, 2);
PHP注意:尝试在第441行的…/wp content/themes/theme name/libs/oi/functions.PHP中获取非对象的属性
function oi_display_hierarchy( $nav_menu, $args )
{
if( ! is_single() )
{
return $nav_menu;
}
$menuXML = new SimpleXMLElement( $nav_menu );
list($current) = $menuXML->xpath( "//li[contains(@class,'current-menu-parent')]" );
if( !empty( $current ) )
{
$node = dom_import_simplexml($current);
while($node)
{
$node = $node->parentNode;
if( $node->tagName == 'li' ) // 441 - The problem line
{
$classes = $node->getAttribute('class');
$node->setAttribute('class', $classes . ' current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor');
}
}
}
return str_replace('<?xml version="1.0"?>', '', $menuXML->asXML());
}
add_filter('wp_nav_menu', 'oi_display_hierarchy', 11, 2);
函数oi\u显示层次结构($nav\u菜单,$args)
{
如果(!is_single())
{
返回$nav_菜单;
}
$menuXML=新的SimpleXMLElement($nav_菜单);
list($current)=$menuXML->xpath(//li[contains(@class,'current-menu-parent')]);
如果(!空($current))
{
$node=dom\u import\u simplexml($current);
while($node)
{
$node=$node->parentNode;
if($node->tagName=='li')//441-问题行
{
$classes=$node->getAttribute('class');
$node->setAttribute('class',$classes.'当前菜单祖先当前菜单父当前_页面\父当前_页面\父祖先');
}
}
}
返回str_replace(“”,,$menuXML->asXML());
}
添加过滤器(“wp\U导航菜单”、“oi\U显示层次结构”,11,2);
你知道这里有什么问题吗 您正试图在正上方的行上获取当前对象父节点:
$node = $node->parentNode;
因此在此之后,$node
将被更改为(DOMElement
继承DOMNode
)<代码>标记名属性不是DOMNode
定义的一部分,它特定于DOMElement
——这就是它抛出错误的原因
xml中的所有内容都是一个节点—文本、行、注释。。。因此,DOMNode
可以是标签,但也可以是其他东西。因此,我们需要使用以下内容检查节点的类型:
if($node->nodeType == XML_ELEMENT_NODE) { // Node is a DOMElement
这样,我们就可以确保$node是一个domeElement
,然后可以安全地使用标记名
属性