2015-07-10 183 views
0

我有一個非常簡單的插件,它爲博客添加了一個元描述。我稍微修改了它以顯示OpenGraph協議和Dublin Core中的描述。這是很容易的部分。修改wordpress插件添加元描述

但我在搜索結果中發現每個頁面都顯示說明。

現在我想添加一個規則,告訴插件是否在發佈,它應該只顯示the_excerpt。

我的想法是簡單地在一些規則中添加一些規則並且隨它去掉。但是我不得不發現這個插件是用<?php wp_head(); ? > 正如我總是試圖件事首先我檢查了插件,它似乎像我找到了一種方法,從

add_action('wp_head', 'vsmd_meta_description'); 

這一呼籲改變

add_action('wp_head_desc', 'vsmd_meta_description'); 

現在我在<頭添加>新請致電<?php wp_head_desc(); ? >檢查是否有效,定義規則

<?php 
if (is_single()) { 
    echo '<meta name="description" content="<?php the_excerpt(); ?>" />'."\n"; 
    echo '<meta name="DC.Description" content="<?php the_excerpt(); ?>" />'."\n"; 
    echo '<meta property="og:description" content="<?php the_excerpt(); ?>" />'."\n"; 
} elseif (is_front_page()) { 
    echo '<?php wp_head_desc(); ?>'; 
} else { 
    echo ''; 
} 
?> 

並很高興。 那麼,這不是那麼容易,因爲它只顯示在源代碼<?php wp_head_desc(); ? >所以我不知所措,因爲我發現的一切都是關於鉤子的東西,我完全不明白。 我所意識到的是,我在插件add_action中的更改確實將其從<?php wp_head()中移除了。 ? > ..所以我相信我接近成就,但現在我不知道如何去完成。

可能有人能夠啓發我如何我可以調用插件?

請 Caylean

回答

1

只要改變add_action('wp_head', 'vsmd_meta_description');

add_action('wp_head', 'vsmd_meta_description_new'); 
     function vsmd_meta_description_new(){ 
      if (is_single()) { 
     echo '<meta name="description" content="<?php the_excerpt(); ?>" />'."\n"; 
     echo '<meta name="DC.Description" content="<?php the_excerpt(); ?>" />'."\n"; 
     echo '<meta property="og:description" content="<?php the_excerpt(); ?>" />'."\n"; 
    } elseif (is_front_page()) { 
     // code here 
    } else { 
     echo ''; 
    } 
    } 
+0

部分我得到那個工作。但現在我需要得到一種愚蠢的解決方法才能使摘錄出現。如果我在這裏使用了代碼,它清楚地顯示了網站上的」/>,但摘錄不是「執行」的。 。我試圖用幾種方式調用它,但是非工作以php錯誤結束,如果我沒有記錯的話。 也沒有工作,就像其他一些人一樣在源代碼中也採用了相同的方法:( – Caylean

+0

嘗試使用'<?echo get_the_excerpt();?>'代替'<?the_excerpt();?>' –

+0

完成。既不是<?echo the_excerpt();?>也不是<?echo get_the_excerpt();?>正在工作,在Source或生成的Posting中都顯示爲「/>所以我可能會隨着你的編輯而去,只是編輯它更多的方式,我保持變量,但與單個和其他語句的空回聲。在我的開放郵政,由於你的編輯我能夠得到它,因爲我需要它可能不完美和美麗的,因爲它可以,但它應該工作。 – Caylean

0

感謝Arshid KV誰教我如何編輯插件我能得到什麼,我一直在尋找。它不是完美的方式,但工作得很好。

我使用WP插件非常簡單的元描述,因爲我想只有描述沒有所有的SEO Hokus Pokus你得到許多其他插件。

插件需要從

// include meta description in header 
function vsmd_meta_description() { 
    $vsmd_meta = esc_attr(get_option('vsmd-setting')); 
    $vsmd_descr = get_bloginfo('description'); 
    if (empty($vsmd_meta)) { 
     echo '<meta name="description" content="'.$vsmd_descr.'" />'."\n"; 
     echo '<meta name="DC.Description" content="'.$vsmd_descr.'" />'."\n"; 
     echo '<meta property="og:description" content="'.$vsmd_descr.'" />'."\n"; 
    } 
    else { 
     echo '<meta name="description" content="'.$vsmd_meta.'" />'."\n"; 
     echo '<meta name="DC.Description" content="'.$vsmd_meta.'" />'."\n"; 
     echo '<meta property="og:description" content="'.$vsmd_meta.'" />'."\n"; 
    } 
} 

改寫爲

// include meta description in header 
function vsmd_meta_description() { 
    $vsmd_meta = esc_attr(get_option('vsmd-setting')); 
    $vsmd_descr = get_bloginfo('description'); 
    if (is_single()) { 
    echo ''; 
    } elseif (is_front_page()) { 
    echo '<meta name="description" content="'.$vsmd_meta.'" />'."\n"; 
    echo '<meta name="DC.Description" content="'.$vsmd_meta.'" />'."\n"; 
    echo '<meta property="og:description" content="'.$vsmd_meta.'" />'."\n"; 
    } else { 
    echo ''; 
    } 
} 

因爲它表明我現在只在FrontPage的說明,但沒有更多的帖子或其他網站。 之後,我不得不在標題中編輯一些內容,以便爲規則和the_excerpt提出所需的描述,但過了一段時間後仍然有效,但還需要進行一些調整,以避免任何用標準和鏈接創建的標籤和鏈接簡單<?php the_excerpt(); ? > 因此,在最後我有修改後的插件文件,並在<頭>部分<?php wp_head(); ?>我添加了我的規則:

<?php if ((is_page()) || (is_single())) : if (have_posts()) : while (have_posts()) : the_post(); ?> 
<?php 
$post = $wp_query->post; 
$descrip = strip_tags($post->post_content); 
$descrip_more = ''; 
if (strlen($descrip) > 155) { 
    $descrip = substr($descrip,0,155); 
    $descrip_more = ' ...'; 
} 
$descrip = str_replace('"', '', $descrip); 
$descrip = str_replace("'", '', $descrip); 
$descripwords = preg_split('/[\n\r\t ]+/', $descrip, -1, PREG_SPLIT_NO_EMPTY); 
array_pop($descripwords); 
$descrip = implode(' ', $descripwords) . $descrip_more; 
echo '<meta name="description" content="'.$descrip.'" />'."\n"; 
echo '<meta name="DC.Description" content="'.$descrip.'" />'."\n"; 
echo '<meta property="og:description" content="'.$descrip.'" />'."\n"; 
?> 
<?php endwhile; endif; elseif(is_home()) : ?> 
<?php endif; ?> 

現在它工作正如我想要的那樣。

如果我可以讓插件工作在插件中,它可以變得更漂亮,因爲它會減少必須做的改變,但至少它現在正在工作,這就是我想要的。

kindly Caylean