如何在管理区域不显示插件

时间:2012-11-08 作者:ironman

我刚刚开始wordpress开发。我正在尝试创建一个简单的插件,用于显示表中db的结果。我可以做到这一点,但我对显示在管理页面顶部的插件有问题。我不知道为什么会这样。

我的插件功能:

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>";
    }
正在调用索引。php

    <?php
        if(is_admin())
        {

        }
        else
        {
            if(function_exists(\'hello_world\')) {
                echo "<div>";
                hello_world();
                echo "</div>";
            }
        }
    ?>
我怎样才能防止它显示在管理部分?

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

补充@s\\u ha\\u 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() 在一个主题中,只要你需要它。

SO网友:s_ha_dum

您已将函数挂接到init 它在(我相信)每个页面加载上运行,无论是正面还是背面,您都在回显数据。不是说得太苛刻,但你预期会发生什么?

要解决此问题,请删除第一行--add_action(\'init\',\'hello_world\'); 然后,仅当从中的代码显式调用时,函数才会运行index.php.

结束