Intereting Posts
Печать среднего размера изображения как удалить метаданные из сообщений моего блога? Невозможно изменить информацию заголовка при попытке моего сайта с помощью www Заказ по произвольной дате Пользовательские меню: проблема динамической подсветки с пользовательской домашней ссылкой Не удается распаковать сайт после обновления до WordPress 3.8 Для лучшей цифровой журналистики, как сохранить второй заголовок и выдержку? Передача параметра fileurl в короткий код из дополнительных пользовательских полей Пользовательская форма входа для пользователя-пользователя, а также администратора отображать сообщения из категории в рамках пользовательской таксономии Вставьте учетную запись пользователя в мою собственную таблицу пользователей вместо собственного пользователя Спасение и преобразование сообщений из одной схемы постоянной ссылки и сайта в другую Игнорировать точки при поиске в медиатеке? Не удается запустить WordPress Плагин jQuery загружен правильно, но ничего не делает

Как работают wp_enqueue_scripts?

У меня есть страница WordPress для моего теннисного клуба. Существует сайт со всем текущим рейтингом, и я хочу разобрать таблицу на одной из моих страниц WordPress.

Я создал динамическую таблицу с php и разработал ее с помощью CSS и Javascript. Он выглядит отлично и работает так же, как я хочу, когда я запускаю его локально в своем браузере. Однако я не могу заставить его работать на странице WordPress.

Я получил совет по использованию wp_enqueue_scripts, но я не совсем понимаю, как это работает. Я просмотрел его в руководстве, есть только уведомление, куда его можно поместить в файл functions.php, но не как использовать его в моем php, который создает таблицу, поэтому я не могу получить там соединение. (?) Как конкретно работает enqueuing? Мне нужен совет, что заменить в php, который я написал.

Может быть, лучший способ сделать это? До сих пор я пробовал комбинировать шорты и плагины кода с одним и тем же результатом: содержимое таблицы анализируется, но CSS и Javascript, к которым я хочу применить, не выполняются.

Это php, который я хочу запустить на странице:

<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="standings_style.css"> </head> <?php $url = 'http://wttv.click-tt.de/cgi-bin/WebObjects/nuLigaTTDE.woa/wa/groupPage?championship=M%C3%BCnster+15%2F16&group=249840'; /* try to prevent errors */ libxml_use_internal_errors(true); /* create the DOMDocument object ready to receive html from remote url */ $dom = new DOMDocument; /* use some of the defined properties for libxml */ $dom->validateOnParse = false; $dom->standalone = true; $dom->strictErrorChecking = false; $dom->recover = true; $dom->formatOutput = false; $dom->preserveWhiteSpace = false; $dom->loadHTML(file_get_contents($url)); /* Capture errors */ $parse_errs = serialize(libxml_get_last_error()); libxml_clear_errors(); /* create an X-Path object ready to query the DOM */ $xp = new DOMXPath($dom); /* Query to find tables with given class */ $col = $xp->query('//table[@class="result-set"]'); foreach ($col as $table) { echo strip_tags($dom->saveHtml($table), "<td><table><tbody><th><tr><img>"); // strip tags i dont want in the table break; // i only want the first one currently } ?> <body> <script> var aTags = document.querySelectorAll("td[nowrap]"); // get all team cells for(var i = 0; i < aTags.length; i++) { var str = aTags[i].innerHTML aTags[i].className += "teams"; // assign teams class to parent tag (the whole row) if(str.indexOf("DJK Borussia Münster")>0){ // search for teamname aTags[i].parentNode.className += " highlight"; // assign highlight class to parent tag (the whole row) } } var bTags = document.getElementsByTagName("img"); // get all images for(var i = 0; i < bTags.length; i++) { var str = bTags[i].src; if(str.indexOf("up_11x11.gif")>0){ // search for img name bTags[i].src = "img/up.gif"; // change image source } if(str.indexOf("down_11x11.gif")>0){ // search for img name bTags[i].src = "img/down.gif"; // change image source } if(str.indexOf("up_grey_11x11.gif")>0){ // search for img name bTags[i].src = "img/up_r.gif"; // change image source } if(str.indexOf("down_grey_11x11.gif")>0){ // search for img name bTags[i].src = "img/down_r.gif"; // change image source } } </script> </body> </html> 

и часть функций.php

 /* Enqueue parent stylesheet first, child stylesheet second*/ function child_theme_s_enqueue_styles() { $parent_style = 'parent-style'; wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' ); wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ) ); } add_action( 'wp_enqueue_scripts', 'child_theme_s_enqueue_styles' ); /* Enqueue Javascript in /child-theme-s/includes/js/ */ function child_theme_s_scripts(){ wp_enqueue_script('child-theme-s-js', get_stylesheet_directory_uri() . '/includes/js/child-theme.js'); } add_action( 'wp_enqueue_scripts', 'child_theme_s_scripts' ); // include files via shortcode function include_file($atts) { extract(shortcode_atts(array('filepath' => 'NULL'), $atts)); if ($filepath!='NULL' && file_exists( trailingslashit( get_stylesheet_directory() ) . $filepath)){ ob_start(); include(get_stylesheet_directory() . $filepath); $content = ob_get_clean(); return $content; } } add_shortcode('include', 'include_file'); function themeslug_enqueue_style() { if ( is_child_theme() ) { // load parent stylesheet first if this is a child theme wp_enqueue_style( 'parent-stylesheet', trailingslashit( get_template_directory_uri() ) . 'standings_style.css', false ); } // load active theme stylesheet in both cases wp_enqueue_style( 'theme-stylesheet', get_stylesheet_uri(), false ); } add_action( 'wp_enqueue_scripts', 'themeslug_enqueue_style' ); 

Спасибо за переписывание вопроса: теперь кажется намного яснее. Извините за затянувшиеся комментарии раньше, но я не был на своем ноутбуке.

Я исправил пару опечаток в вашем коде и вложил их в мои функции. Php:

 // include files via shortcode function include_file($atts) { extract(shortcode_atts(array('filepath' => NULL), $atts)); if ($filepath!='NULL' && file_exists( trailingslashit( get_stylesheet_directory() ) . $filepath)){ ob_start(); include(get_stylesheet_directory() . '/' . $filepath); $content = ob_get_clean(); return 'hello' . $content; } } add_shortcode('include', 'include_file'); function themeslug_enqueue_style() { if ( is_child_theme() ) { // load parent stylesheet first if this is a child theme wp_enqueue_style( 'parent-stylesheet', trailingslashit( get_template_directory_uri() ) . 'standings_style.css', false ); } // load active theme stylesheet in both cases wp_enqueue_style( 'theme-stylesheet', get_stylesheet_uri(), false ); } add_action( 'wp_enqueue_scripts', 'themeslug_enqueue_style' ); 

Итак, для вашей дочерней темы вы сохраните свой первый фрагмент кода как wp-content / themes / childhemingway / includefile.php и поместите короткий код [include filepath = "includefile.php"] на страницу.

Когда я просматриваю страницу, я получаю ее в своем браузере (здесь ясность сокращена):

 // My theme's doctype, <head>, <body> and page header <div class="entry-content"> <link rel="stylesheet" type="text/css" href="standings_style.css"> <table class="result-set" cellpadding="0" border="0" cellspacing="0"> Your table data appears here OK. </table> <script> // your script renders here OK </script> </div> // My theme's sidebar, footer, </body> & </html> 

Я получаю 5 Failed to load resource: the server responded with a status of 404 (Not Found) ошибок в моем браузере для этих ресурсов:

http://img.wordpressask.com/php/up_grey_11x11.gif?nlv=e9c36c22

http://test.localhost/test-page/standings_style.css

http://img.wordpressask.com/php/down_11x11.gif?nlv=e9c36c22

http://img.wordpressask.com/php/up_11x11.gif?nlv=e9c36c22

http://img.wordpressask.com/php/down_grey_11x11.gif?nlv=e9c36c22

Мне кажется, что ваш скрипт работает нормально, но у нас есть ссылки на исправление.

Вам нужно будет сохранить четыре отсутствующих файла изображения в вашей теме, ссылаться на них относительно вашего скрипта, а затем посмотреть, не движется ли это вперед.

Ссылка на файл CSS в том виде, в котором он находится, относится к URL-адресу страницы, и здесь происходит wp_enqueue_scripts.

Удалите эту строку из прилагаемого файла:

 <link rel="stylesheet" type="text/css" href="standings_style.css"> 

Убедитесь, что у вас есть копия standings_style.css сохраненная в wp-content/themes/childhemingway/

Используйте это в своих функциях.php вместо текущей функции и зацепите:

 function wpse_233056_enqueue_style() { wp_enqueue_style( 'special-table-stylesheet', get_stylesheet_directory_uri() . '/standings_style.css' ); } add_action( 'wp_enqueue_scripts', 'wpse_233056_enqueue_style' ); 

И это должно, если я прочитаю все правильно, исправьте.

В зависимости от того, как ваша родительская тема загружает свою основную таблицу стилей, мы можем или не обязательно ее также ставить в очередь.

Кроме того, обновите файл генерации JavaScript для загрузки изображений из каталога / img / вашей темы. Изменение этого:

 bTags[i].src = "img/up.gif"; 

в

 bTags[i].src = "<?php echo get_stylesheet_directory_uri(); ?>/img/up.gif"; 

должен разобраться. И то же самое для трех других изображений, конечно.