2016-01-27 73 views
2

我正在自定義一個用於彈出電子郵件訂閱的wordpress插件。當用戶提交電子郵件時,他會收到一封確認郵件,其中iam將自定義html發送給他。我的網站上有五個不同的頁面,每個頁面都有該彈出窗口。我所做的是,我想得到我的網頁的名稱比根據我想發送電子郵件中的HTML。我爲其他插件做了完全相同的事情,它的工作,但在這個彈出式插件iam無法從它被稱爲的地方得到頁面名稱。 我試過以下的東西,但失敗了。無法在wordpress中獲取頁面名稱

global $post;  /* this worked perfect on other plugin */ 
$pagename = $post->post_name; 
if($pagename=="page1") 
{ 
// html page1 // 
} 
else 
{ 
// html page2 // 
} 

只是嘗試這樣做

$slug = basename(get_permalink()); 
if($slug=="page1") and so on 
+0

您可以使用echo「http://」。 $ _SERVER ['HTTP_HOST']。 $ _SERVER [ 'REQUEST_URI']; – MSA

+0

@developer did not work –

回答

0

在這裏你去,你需要得到title對於這一點,因爲

$post = get_post($post); 

$pagename = isset($post->post_title) ? $post->post_title : ''; 

希望它能幫助。

+0

我試過了,但它並沒有工作:( –

+0

如果你嘗試過,它沒有工作,你爲什麼接受答案@AmmarUlHassan? –

+0

是的,它確實工作..謝謝 –

0

最好的方法是使用get_queried_object。據檢索當前查詢的對象 - 網頁,發佈,分類學,無論...

你可以試試這個代碼,它的工作對我來說:

$qo = get_queried_object(); 
if ('page' !== $qo->post_type) { 
    //Here you can be sure, that you are in page query, so this is available 
    $pagename = $qo->post_name; 
} 
+0

這在其他頁面但在我目前的插件php文件:( –

0

請嘗試使用此:

$pagename = get_query_var('pagename'); 
if (!$pagename && $id > 0) { 
    // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object 
    $post = $wp_query->get_queried_object(); 
    $pagename = $post->post_name; 
} 
+0

)失敗我做到了這一點,但失敗了這些事情在其他頁面上工作,但不是在這個彈出插件文件:( –

+0

爲什麼要OP「試試這個」?***好的答案***將永遠有解釋做了什麼,爲什麼這樣做,這不僅是爲了OP,而且是爲了未來的訪問者SO. –

+0

@JayBlanchard你爲什麼只評論我的答案,其中許多人沒有解釋它 –