1

我有下面的代码

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(); ?>

请帮我。

4

2 回答 2

2

在 add_action 文档中它说

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

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

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

因此,或者您要么声明一个从 wordpress 核心提供的操作挂钩(请参阅此处的列表: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)

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

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

所以您的自定义帖子的名称在?post_type=

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

于 2013-11-09T13:01:15.010 回答
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'); 
于 2013-11-09T15:31:45.990 回答