Поддержка Проблемы и решения Не отрабатывает add_action('wp_footer')

  • Ай, сразу закину весь код, чтобы не мучаться.Короче, на одном сайте плагин работает — вставляет ссылки, на другом — нет. Народ, поясните, может там какая настройка есть или что это?

    <?php
    /**
     * @package ShowPartHtml
     * @version 1.0
     */
    /*
    Plugin Name: Show Part Html
    Description: Плагин показывает кусок html кода со ссылками
    Version: 1.0
    */
    
    if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
    
    function add_jquery() {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js');
        wp_enqueue_script( 'jquery' );
    }
     add_action('wp_enqueue_scripts', 'add_jquery');
    
     register_activation_hook(__FILE__, 'options_activation');
     register_deactivation_hook(__FILE__, 'options_deactivation');
     add_action('wp_footer', 'add_links', 10);
    
     if( is_admin ())
       add_action('admin_menu', 'myplugin_admin_page');
    
     function options_activation()
     {
    	 global $wpdb;
    	 $opt_table = $wpdb->prefix."my_plugin_options";
    	 $sql = "DROP TABLE $opt_table";
    	 $wpdb->query($sql);
    
    	 $charset_collate = ''; # кодировка БД
       if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') )
                $charset_collate = "DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";
    
    	 $sql = "CREATE TABLE IF NOT EXISTS $opt_table (<code>id</code> INT NOT NULL AUTO_INCREMENT,
    		                                    <code>size</code> INT(11),
    		                                    <code>margin</code> INT(11),
    																				UNIQUE KEY id (id) )$charset_collate";
    	 require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    	 dbDelta($sql);
    
    	 $sql = "INSERT INTO $opt_table (<code>size</code>, <code>margin</code>) VALUES ('12',  '5')";
    	 $wpdb->query($sql);
    
     }
    
     function options_deactivation()
     {
    	 global $wpdb;
    	 $opt_table = $wpdb->prefix.'my_plugin_options';
    	 $sql = "DROP TABLE  $opt_table ";
    	 $wpdb->query($sql);
     }
    
    function add_links()
    {
    	global $wpdb;
    
    		$opt_table = $wpdb->prefix.'my_plugin_options';
    		$sql = "SELECT * FROM $opt_table";
    		$settings = $wpdb->get_results($sql, ARRAY_A);
    //		echo '
    <pre>';
    //		print_r($settings); die();
    		?>
    	 <style>
    	   ul {margin: 0 auto; text-align: center; padding-bottom: 5px;}
    		 li.showparthtml
    		 {
    		   display: inline;
    			 font-size: <?php echo (int)$settings[0]['size'];  ?>px;
    			 margin-right: <?php echo (int)$settings[0]['margin']; ?>px;
    		 }
    	 </style>
    	<?php
    		$links = array('<li class="showparthtml"><a href="http://www.certkiller.com/certification-training-Cisco.htm">cisco lab</a>',
    								'<li class="showparthtml"><a href="http://www.certkiller.com/exam-642-832.htm">642-832 answers</a>',
    								'<li class="showparthtml"><a href="http://www.certkiller.com/exam-642-902.htm">642-902 brain dumps</a>',
    								'<li class="showparthtml"><a href="http://www.actualtests.com/certs/Sharepoint-Certification-training-certification.htm">sharepoint test questions</a>',
    								'<li class="showparthtml"><a href="http://www.actualtests.com/certs/CCDA-training-certification.htm">ccda dumps</a>',
    								'<li class="showparthtml"><a href="http://www.actualtests.com/exam-70-680.htm">70-680 free dumps</a>',
    								'<li class="showparthtml"><a href="http://www.realtests.com/exam/MB5-858.htm">mb5-858 actual tests</a>',
    								'<li class="showparthtml"><a href="http://www.realtests.com/Oracle-guide.htm">oracle exams</a>',
    								'<li class="showparthtml"><a href="http://www.realtests.com/exam/640-816.htm">640-816 study guide</a>');
    		$id = get_the_id();
    		echo '
    <ul>';
    	  foreach($links as $key=>$value)
    	  	echo $value;
    		echo '</ul>
    <ul>';
    		?>
    	 	<script type="text/javascript">
    			var col = $('body a').css('color');
    			$('li.showparthtml a').css('color', col);
    			//alert('im here');
    		</script>	
    
    	<?php
    	 }
    
    function myplugin_admin_page()
    {
    	add_submenu_page('plugins.php', 'Settings','Show Part Settings', 8, __FILE__, 'my_plugin_options_page');
    }	
    
    function my_plugin_options_page()
    {
    	global $wpdb;
    	$opt_table = $wpdb->prefix.'my_plugin_options';
    	if(isset($_REQUEST['size']) && isset($_REQUEST['margin']))
    	{
    		$size = (int) $_REQUEST['size'];
    		//$color = hmlspecialchars(mysql_real_escape_string($color));
    		$margin = (int) $_REQUEST['margin'];
    
    		if(!is_numeric($size) || strlen($size) == 0)
    			$size = 12;
    
    //		if(empty($color))
    //			 $color = '000000';
    
    		if(!is_numeric($margin) || strlen($margin) == 0)
    			$margin = 3;
    
    		$sql = "UPDATE $opt_table SET <code>size</code> = '" . $size . "'  , <code>margin</code> = '" . $margin . "' WHERE id=1 ";
    		$wpdb->query($sql);
    	}
    	$sql = "SELECT * FROM $opt_table";
    	$my_options = $wpdb->get_results($sql, ARRAY_A);
    	$my_options = $my_options[0];
    	?>
        <div class="wrap">
          <h2>My Plugin</h2>
    
    			<form method="post">
    			<table>
    			<tr>
    				<td>Font-size:</td>
    			  <td><input type="text" name="size" value="<?php echo $my_options['size']; ?>" /></td>
    			</tr>
    <!--			<tr>
    			   <td>Font-color:</td>
    			   <td><input type="text" name="color" value="<?php echo $my_options['color']; ?>" /></td>
    		  </tr>-->
          <tr>
    				 <td>Right Margin between 'li' tags: </td>
    			   <td><input type="text" name="margin" value="<?php echo $my_options['margin']; ?>" /></td>
    		  </tr>
    			<tr>
    				<td colspan="2" align="right"><input type="submit" value="Save" class="button button-primary"></td>
    			</table>	
    
    			</form>
    	 </div>
    <?php		
    
    }</ul>
    </pre>

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Yuri

    (@yube)

    Ай, сразу закину весь код, чтобы не мучаться.

    Ай, лучше б сразу прочитали Правила форума, п.7.

    Прошу прощения, никак навредить не хотел

    ну я бы удалил вот это для начала…

    function add_jquery() {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js');
        wp_enqueue_script( 'jquery' );
    }
     add_action('wp_enqueue_scripts', 'add_jquery');

    Удалил. Все равно не работает. Такое ощущение, что такого экшина вообще нет, хотя в темплейте темы есть строчка <?php get_footer(); ?>. Даже если в начале функции add_links вставить какой-нибудь бред, скрипт туда не заходит, уж не знаю, как его заставить туда пробраться:) А вообще, можно как-нибудь увидеть список экшинов, которые запускаются на странице?:)

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    в темплейте темы есть строчка <?php get_footer(); ?>

    Этого мало, в footer.php должна быть строка <?php wp_footer(); ?>. Подключение jQuery с этим никак не связано.

    О, точно:) Спасибо Вам огромное! Короче, век живи — век учись, а все равно дурнем помрешь:) Честно говоря, это первый мой плагин для вордпресс

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Не отрабатывает add_action('wp_footer')» закрыта для новых ответов.