2015-07-10 125 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