Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义的属性:DOMDocument::$tagName_Php_Wordpress - Fatal编程技术网

Php 未定义的属性:DOMDocument::$tagName

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

我在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 = 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
,然后可以安全地使用
标记名
属性