2014-10-03 162 views
3

我正在尋找解決方案來爲短代碼插件添加自定義模板。但我無法成功地做到這一點。wordpress插件的自定義模板

我在我的插件文件夾中創建了一個模板文件夾,並在其中放置了一個自定義模板。我想通過輸入簡短的代碼來顯示這個模板。爲此,我寫了下面的一段代碼。

function wp_parse_login() 
{ 
    add_action('template_redirect', 'my_template'); 
    function my_template() 
    { 
     include ('template/login.php'); 
     exit; 
    } 
} 
add_shortcode('parse_login_page','wp_parse_login'); 

但它不工作。我已經將這個文件包含到我的主插件文件中。我想我會留下一些鉤子。

+0

你確實試圖通過'[parse_login_page]'調用你的短代碼,對吧?乍一看,一切都很美好。 – mudasobwa 2014-10-03 07:44:55

+0

是的,我想讓我的短代碼出現這個模板(login.php)。但我沒有得到模板。基本上add_action('template_redirect','my_template');不起作用 – Sajid 2014-10-03 07:56:37

+0

嘗試將'my_template'的定義移動到全局範圍。 – mudasobwa 2014-10-03 07:57:50

回答

2

這裏從WordPress Codex

function wp_parse_login() { 
    ob_start(); 
    include ('template/login.php'); 
    return ob_get_clean(); 
} 
add_shortcode('parse_login_page','wp_parse_login'); 
+0

Thanx @wait xd。仍然不能正常工作。 – Sajid 2014-10-03 08:02:38

0

你第一次在DB就像一個頁面模板改編例如:你在這個代碼寫在你的模板頁面

$table_post_meta = $wpdb->prefix.'postmeta'; 

$meta_data = array(
    'post_id'  => $post_id, (Get dynamically post id of a page) 
    'meta_key'  => '_wp_page_template', 
    'meta_value' => 'template/login.php' (Give the file path) 
); 
$wpdb->insert($table_post_meta,$meta_data) or die(mysql_error()); 

的:

function wp_parse_login() { 
    ob_start(); 
    include ('template/login.php'); 
    return ob_get_clean(); 
} 
add_shortcode('parse_login_page','wp_parse_login'); 

希望你找到你的解決方案。