@Emperio

Почему не работают шорткоды плагинов wordpress в моей теме?

Пишу свою тему основываясь на этой картинке: https://developer.wordpress.org/files/2014/10/temp...
После установки и активации плагинов "для входа и регистрации" (theme my login, wp-recall) автоматически создаются некоторые страницы на которых написан только сам шорткод ( например [theme-my-login] )
На этих страницах у меня почему то ничего нет - белый лист. Т.е. шорткоды не срабатывают. Установка плагинов на тему twentyfifteen показывает, что плагины рабочие и там шорткоды срабатывают и страницы появляющиеся после установки плагинов не пустые.
Очевидно проблема в моей теме. Белый лист я вижу как на локальном сервере так и на сервере хостинг-провайдера. В моей теме имеются следующие файлы: 404.php, category.php, footer.php, footer-home.php, functions.php, куча хидеров - для каждой страницы свой, home.php, index.php (пустой), куча файлов вида page-id.php, search.php, searchform.php, sidebar.php, single.php, single-post.php. Ну ещё файл стилей и скриншот. Вот код functions.php:

function load_scripts(){
wp_enqueue_style('style', get_bloginfo('template_url').'/style.css' );
wp_register_script('main', get_bloginfo('template_url').'/js/main.js',false,'26092015' ,true);
wp_enqueue_script('main');
}

add_action('wp_enqueue_scripts', 'load_scripts');

add_theme_support( 'post-thumbnails' );

register_nav_menu('nav_menu', 'Навигационное шапка-меню');

/*if (function_exists('register_sidebar') )
register_sidebar(array(
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
));*/
if (!current_user_can('administrator')):
show_admin_bar(false);
endif;

register_sidebar(array(
'name' => 'Виджеты сайдбара1',
'id' => 'sidebar1',
'description' => 'для входа'
));
register_sidebar(array(
'name' => 'Виджеты сайдбара2',
'id' => 'sidebar2',
'description' => 'для регистрации'
));
register_sidebar(array(
'name' => 'Виджеты сайдбара3',
'id' => 'sidebar3',
'description' => 'для рубрик'
));

function mytheme_content_filter( $content ) {
// Do stuff to $content, which contains the_content()
// Then return it
return $content;
}
add_filter( 'the_content', 'mytheme_content_filter' );

add_action('phpmailer_init','send_smtp_email');
function send_smtp_email( $phpmailer ) {
// тут стандартный код настроек почты

}

if ( ! function_exists( 'get_current_page_url' ) ) {
function get_current_page_url() {
global $wp;
return add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
}
}
  • Вопрос задан
  • 2986 просмотров
Решения вопроса 1
Punkie
@Punkie
Приучайтесь пастить такой код куда нибудь на codeshare.io или jsfiddle.com или codepen.io
По факту:
У вас вот тут какая-то функция фильтрации the_content() :
function mytheme_content_filter( $content ) {
// Do stuff to $content, which contains the_content()
// Then return it
return $content;
}
add_filter( 'the_content', 'mytheme_content_filter' );


Очевидно, что где-то в теме при выводе контента страниц он отрезает ваш шорткод.

Если не найдете причину - можно такой костыль:

После установки и активации плагинов "для входа и регистрации" (theme my login, wp-recall) автоматически создаются некоторые страницы на которых написан только сам шорткод ( например [theme-my-login] )


Вот вы сами создайте страницу логина со слагом my-login, далее клонируйте ваш page.php с именем page-my-login.php. В нём найдите кусок кода, где выводится the_content или $content и замените его на вот такое:
<?php echo do_shortcode("[theme-my-login]");?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Emperio Автор вопроса
Для тех, кто возможно попадёт на этот вопрос: ответ в том, что наличие шорткода в содержимом страницы недостаточно, чтобы переходя по ссылке-якорю этой страницы что-нибудь отображалось. Всё равно необходим соответствующий php файл. Например page-simplepage.php в котором будет вывод содержимого страницы. Например в цикле вордпресса с помощью функции the_content (wp-kama.ru/function/the_content)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы