Я просто начинаю с разработкой Wordpress. Я пытаюсь создать простой плагин, которые показывают результаты дб в таблице. Я могу сделать это, но я испытываю затруднения из-за показа плагина наверху администраторских страниц. Я не уверен, почему это делает это.
моя сменная функция:
add_action('init','hello_world');
function hello_world()
{
global $wpdb;
$query = "Select ID, post_title
From $wpdb->posts Limit 0, 10";
$results = $wpdb->get_results($query, ARRAY_A);
echo "<div class=\"datagrid\"><table>";
echo "<thead><tr><th>header</th><th>header</th><th>header</th><th>header</th></tr></thead>";
echo "<tfoot>
<tr>
<td colspan=\"4\">
<div id=\"paging\">
<ul>
<li>
<a href=\"#\"><span>Previous</span></a>
</li>
<li>
<a href=\"#\" class=\"active\"><span>1</span></a>
</li>
<li>
<a href=\"#\"><span>2</span></a>
</li>
<li>
<a href=\"#\"><span>3</span></a>
</li>
<li>
<a href=\"#\"><span>4</span></a>
</li>
<li>
<a href=\"#\"><span>5</span></a>
</li>
<li>
<a href=\"#\"><span>Next</span></a>
</li>
</ul>
</div>
</tr>
</tfoot>";
echo "<tbody>";
$i = 0;
while($i < 10)
{
foreach ($results as $item)
{
$postID = $item['ID'];
$postTitle = $item['post_title'];
echo "<tr class=\"alt\">";
echo "<td>" .$postID."</td>";
echo "<td>".$postTitle."</td>";
echo "</tr>";
$i++;
}
}
echo "</tbody>";
echo "</table></div>";
}
вызов в index.php
<?php
if(is_admin())
{
}
else
{
if(function_exists('hello_world')) {
echo "<div>";
hello_world();
echo "</div>";
}
}
?>
как я могу препятствовать тому, чтобы это показало в администраторском разделе?
К ответу дополнительного @s_ha_dum: Если Вы просто хотите предложить функцию, которая будет использоваться в теме, сделайте ее пользовательским действием.
Образец:
add_action( 'call_hello_world', 'hello_world' );
Теперь, в теме, автор может вызвать Вашу функцию с …
do_action( 'call_hello_world' );
… и функция распечатает свое содержание только там, где автору нужен он.
Это имеет по крайней мере три преимущества:
function_exists()
, который всегда является … ужасен.Вот демонстрационный плагин:
<?php
/*
* Plugin Name: Custom Action
*/
add_action( 'call_hello_world', 'hello_world' );
/**
* Demo function.
*
* Usage:
* do_action( 'call_hello_world' );
*
* @wp-hook call_hello_world
* @return void
*/
function hello_world()
{
print '<h1>Hello World!</h1>';
}
// static class method
add_action( 'call_static_method', array ( 'Demo_Class', 'static_method' );
// dynamic class method
$demo = new Demo_Class;
add_action( 'call_dynamic_method', array ( $demo, 'dynamic_method' );
class Demo_Class
{
public static function static_method()
{
print 'I was called statically.';
}
public function dynamic_method()
{
print 'I was called with an instance.';
}
}
Установите, активируйте и используйте do_action()
в теме так часто, как Вам нужен он.
Вы сцепили свою функцию с init
который работает (я верю), каждая загрузка страницы, передняя сторона или назад, и Вы повторяете данные. Не быть резким, но что Вы ожидали происходить?
Для решения этого удалите первую строку- add_action('init','hello_world');
Ваша функция будет затем только работать, когда явно названо из Вашего кода в index.php
.
hello dolly
плагин, который поставлется с WordPress, почти так прост, как он может добираться, но Вам действительно нужны несколько вещей, как правильные заголовки.
– s_ha_dum
09.11.2012, 00:50