Подскажите по Wordpress
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Всем привет
Я решил перенести свой древний сайт с Joomla 2.5 на Wordpress. Joomla совсем что-то медленно развивается в отличие от Wordpress и менее удобная для написания статей в блоге (хотя некоторые вещи наоборот в Wordpress намного сложнее сделать).
До этого никогда не копался в CSS и коде СMS. Программирование начал изучать недавно (в php только на пути к БД и объектам).
В качестве основы для темы я взял бесплатный фреймворк colorlib.com/wp/themes/sparkling Пока занимаюсь внешним видом, а потом уже добавлю плагинов: pasha4ur.org.ua/docs/newsite.png
Проблема в том, что автор темы жестко прописал «Slider» и Call To Action" только для FrontPage и HomePage.
extras.php @ 266
if ( is_front_page() && of_get_option( 'sparkling_slider_checkbox' ) == 1 ) {
@246
if ( (is_home() || is_front_page()) && of_get_option( 'w2f_cfa_text' )!='') {
functions.php @ 224
if( (is_home() || is_front_page() ) && of_get_option('sparkling_slider_checkbox') == 1 ) {
@ 238
if( (is_home() || is_front_page()) && of_get_option('sparkling_slider_checkbox') == 1 )
А мне нужно отобразить везде кроме некоторых категорий, страниц, постов и авторов.
Я нашел через время, как это обойти:
if ( (is_front_page() || is_category() || is_single() || is_author()) && of_get_option( 'sparkling_slider_checkbox' ) == 1 ) { if ( (is_home() || is_front_page() || is_category() || is_single() || is_author()) && !is_single(75) && of_get_option( 'w2f_cfa_text' )!='') { if( (is_home() || is_front_page() || is_category() || is_single() || is_author()) && of_get_option('sparkling_slider_checkbox') == 1 ) { if( (is_home() || is_front_page() || is_category() || is_single() || is_author()) && of_get_option('sparkling_slider_checkbox') == 1 )
Но это ужасно и неудобно. Написал функцию, но не знаю, где взять для нее первый параметр $wpOb (объект, которые сейчас отображается в WP). Подскажите, пожалуйста:
<?php // где-то в самом верху в function.php объявляем $exceptedObjects = [ 'sliderInHeader' =>[ 'catId' =>[], 'postId' =>[], 'pageId' =>[], 'authorId' =>[] ], 'callToAction' =>[ 'catId' =>[], 'postId' =>[], 'pageId' =>[], 'authorId' =>[] ], 'adSense1' =>[ 'catId' =>[], 'postId' =>[], 'pageId' =>[], 'authorId' =>[] ], ]; function isModuleShown($wpOb, $module =''){ $wpObType = ''; $wpObID =''; // как получить ид переданного объекта WP? $result = true; $eo = $GLOBALS['exceptedObjects']; if($module && array_key_exists ($module , $eo)){ if ($is_category($wpOb)) $wpObType = 'catId'; elseif ($is_single($wpOb)) $wpObType = 'postId'; elseif ($is_page($wpOb)) $wpObType = 'pageId'; elseif ($is_author($wpOb)) $wpObType = 'authorId'; elseif ($is_attachment($wpOb)) $result = false; if($wpObType && $wpObID){ $result = !in_array ($wpObID, $eo[$module][$wpObType], true); } } return $result; }; ?>
Сильно не пинайте. Я до этого мало чего писал.
P.S. Стараюсь все делать через дочернюю тему, чтобы иметь возможность устанавливать обновления темы. Пишу в дочерний css, копирую php файлы (например, content) в папку дочерней темы и изменяю. Но пришлось лезть в php основной темы. Я не могу скопировать файл functions.php, потому что он не заменяет основной, а загружается до него + не могу заменить \themes\sparkling\inc\extras.php файлом из дочерней темы (подключается в functions.php)
9 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів