2013-11-09 2 views
1

У меня есть код ниже2 выдержки в тематических функций в 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(); ?> 

Пожалуйста, помогите мне.

+0

Где ваша функция the_excerpt_slider()? – Laxmana

+0

@ Laxmana Я думал, что это нормально, если он объявлен как это 'add_action ('the_excerpt_slider', 'limit_the_content_slider'); Функция limit_the_content_slider ($ content_slider) {' – Adrian

ответ

2

В add_action документации говорится, что

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

$hook : The name of the action to which $function_to_add is hooked. (See Plugin API/Action Reference for a list of action hooks). Can also be the name of an action inside a theme or plugin file, or the special tag "all", in which case the function will be called for all hooks)

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.

UPDATE

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) 

'слайдер' является именем вашего таможенного поста. Вы должны изменить его на свое определенное имя. Вы можете найти его, если вы перейдете на панель администратора и перейдите туда, где отображаются все слайдеры. В URL, вы должны увидеть что-то вроде:

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

так что название вашего таможенного поста является после ?post_type=

Также внутри вашего файла вы должны изменить <?php the_excerpt_slider(); ?> к <?php the_excerpt(); ?>

+0

Я пытаюсь понять, это не ваша ошибка :) Я - нуб. – Adrian

+0

:). Ваш вопрос поможет мне также понять пользовательские крючки! – Laxmana

+0

:) Хмм все еще мучает. – Adrian

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'); 
+0

Хорошее решение! – Laxmana

Смежные вопросы