2在wordpress中的主题功能摘录

时间:2013-11-09 12:44:00

标签: php wordpress

我有以下代码

add_action('the_excerpt','limit_the_content'); 
function limit_the_content($content){
  $settings = get_option('mytheme_options'); 
  $word_limit = $settings['numberofwordsexcerpt']; 
  $words = explode(' ', $content); 
  return implode(' ', array_slice($words, 0, $word_limit)); 
}

add_action('the_excerpt_slider','limit_the_content_slider'); 
function limit_the_content_slider($content_slider){
  $settings = get_option('mytheme_options'); 
  $word_limit_slider = $settings['numberofwordsexcerptslider']; 
  $words_slider = explode(' ', $content_slider); 
  return implode(' ', array_slice($words_slider, 0, $word_limit_slider)); 
}

我试图用

触发index.php中的第二个函数
<?php the_excerpt_slider(); ?>

我收到错误:

Fatal error: Call to undefined function the_excerpt_slider() in

我触发的第一个与

配合得很好
<?php the_excerpt(); ?>

请帮帮我。

2 个答案:

答案 0 :(得分:2)

在add_action文档中,它说明了

add_action( $hook, $function_to_add, $priority, $accepted_args );
  

$ hook:$ function_to_add被挂钩的动作的名称。 (有关操作挂钩列表,请参阅插件API /操作参考)。也可以是主题或插件文件中的操作名称,或特殊标记&#34; all&#34;,在这种情况下,将为所有挂钩调用该函数)

http://codex.wordpress.org/Function_Reference/add_action

所以或者你要么声明一个由wordpress core提供的动作钩子(参见这里的列表:http://codex.wordpress.org/Plugin_API/Action_Reference),或者你可以提供你的动作但是这个动作,在你的情况下是the_excerpt_slider();,必须是在function.php文件中的某处声明。所以,你得到这个错误。 the_excerpt();工作正常,因为它是wordpress的核心功能。

<强>更新

add_action('the_excerpt','limit_the_content'); 
function limit_the_content($content){
  global $post;
  if('slider' == get_post_type($post->ID)){
    $settings = get_option('mytheme_options'); 
    $word_limit_slider = $settings['numberofwordsexcerptslider']; 
    $words_slider = explode(' ', $content_slider); 
    return implode(' ', array_slice($words_slider, 0, $word_limit_slider)); 
  }else{
    $settings = get_option('mytheme_options'); 
    $word_limit = $settings['numberofwordsexcerpt']; 
    $words = explode(' ', $content); 
    return implode(' ', array_slice($words, 0, $word_limit));
  }
}

在这行代码中:

'slider' == get_post_type($post->ID)

&#39;滑块&#39;是您的自定义帖子的名称。您必须将其更改为您定义的名称。如果您转到管理面板并转到显示所有滑块的位置,您就可以找到它。在网址中你应该看到类似的内容:

http://yoururl/wp-admin/edit.php?post_type=slider

因此,您的自定义帖子的名称位于?post_type=

之后

同样在您的文件中,您应该将<?php the_excerpt_slider(); ?>更改为<?php the_excerpt(); ?>

答案 1 :(得分:1)

我设法让它工作,这是如何。我需要声明而不是the_excerpt,我在滑块the_content的一个上声明,并在每个函数之后添加了操作,它在之前。

function limit_the_content_slider($content_slider){
  $settings = get_option('mytheme_options'); 
  $word_limit_slider = $settings['numberofwordsexcerptslider']; 
  $words_slider = explode(' ', $content_slider); 
  return implode(' ', array_slice($words_slider, 0, $word_limit_slider)); 
}
add_action('the_excerpt','limit_the_content_slider');

function limit_the_content($content){
  $settings = get_option('mytheme_options'); 
  $word_limit = $settings['numberofwordsexcerpt']; 
  $words = explode(' ', $content); 
  return implode(' ', array_slice($words, 0, $word_limit)); 
}
add_action('the_content','limit_the_content');