2015-04-27 41 views
0

我正在使用一個xml文件來收集有關我的員工的信息(工作時間等),並且我想根據員工登錄的情況在公司網站的某個頁面上顯示這些信息。爲此,我認爲我可以創建一個短代碼,這裏的代碼我使用:如何在Wordpress頁面中顯示自定義xml文件的內容?

function register_xml_file() { 
    wp_register_style('porva', get_stylesheet_directory_uri() . '/porva.xml' ); 
    wp_enqueue_style('porva'); 
} 
add_action('wp_enqueue_scripts', 'register_xml_file'); 

function dati_tbcrew($atts){ 
    global $user_login; 
    get_currentuserinfo(); 
    $percorso=get_stylesheet_directory_uri(); 
    $percorso.="/porva.xml"; 
    $xml=simplexml_load_file($percorso) or die("Error: Cannot create object"); 
    switch($xml->name['nome']){ 
     case $user_login: $out=$xml->name->contenuto;break; 
     default:break; 
    } 
    return $out; 
} 
add_shortcode('dati_tbcrew', 'dati_tbcrew'); 

不幸的是,輸出是:

Error: Cannot create object 

爲什麼不能使用simplexml_load_file找到xml文件?

+0

你爲什麼想把它註冊爲Style? – Musk

+0

*「我錯過了什麼?」* - 如你所寫的代碼,這是*死亡*錯誤信息,你可能會錯過,爲什麼你已經把'死亡'放在那裏。所以,如果你能詳細說明爲什麼你真的把*'die' *放在那裏,這可以揭示你的問題,但到目前爲止,你隱藏了這些信息。如果你不能這樣做,你已經可以回答你的問題了:如果[simplexml_load_file'](http://php.net/simplexml_load_file)返回一個等於布爾值FALSE的值,你錯過了使軟件停止運行在PHP俚語:是虛假的)。 – hakre

+0

我不錯過爲什麼我使用_die_,你錯過了(我不明白爲什麼)。我使用它來表明simplexml_load_file沒有找到xml文件,所以返回FALSE。我會改變這個問題,這樣你就不會再困惑了。 – Febz

回答

0

像這樣的東西應該工作,也考慮使用不同的路徑,將提供更多的信息後編輯此答案。就像這個文件將從中獲取的XML結構和位置一樣。

function employee_info_func(){ 

    $user = wp_get_current_user(); 

    if(/** Validate User **/ FALSE){ 
     return; 
    }else{ 
     $path_to_file = ''; 

     $xml = $xml=simplexml_load_file($path_to_file); 

     return 'Print Whatever'; 
    } 

} 

add_shortcode('employee_info','employee_info_func'); 

一個更好的做法可能會將XML信息上傳到數據庫中的json對象並提取該信息。

+0

我試過你的代碼並刪除了註冊,但不幸的是沒有任何改變。我會試着用json。 – Febz

+0

您的路徑很可能是錯誤的,您嘗試從哪個路徑獲取xml? – Musk

+0

xml文件位於我的子主題文件夾中,我嘗試過: - $ path = get_stylesheet_directory()。 「/porva.xml」; - $ path = get_stylesheet_directory_uri()。 「/porva.xml」; - $ path =「/ web/wp-content/themes/canvas-child/porva.xml」; - $ path =「/ wp-content/themes/canvas-child/porva.xml」; 沒有一個工作。 – Febz

相關問題