第一个插件,Get_Pages的问题

时间:2013-09-12 作者:StenW

这是我的第一个插件,或多或少是从头开始的,我想我几乎可以让它工作了,但还没有完全实现。该插件的目的是获取所有子页面,显示它们的缩略图、标题等。现在我编写了插件,它给了我0个输出。。。为什么?可能有很多事情我都做错了,但我决定开始在get\\u页面部分寻找错误。如果我添加print_r(\'$child_query\')$child_query = get_pages($args); 这不应该至少输出一些东西吗?

问为什么print_r(\'$child_query\') 不返回任何内容?

我的代码有问题的代码。。。

<?php
/*
Plugin Name: Child Pages Querry
Author: Sten Winroth
Plugin URI: 
Description: 
Version: 1.0
Author URI: 
Domain Path: /languages
Text Domain: 
*/

new childPagesQuerry();
class childPagesQuerry {

private $ver = \'1.0\';

function __construct(){
add_action("init", array(&$this, "init"));
add_shortcode(\'child_query\', \'child_query_frontend\');
}

public function init()
{
add_post_type_support(\'page\', \'excerpt\');
}
private function child_query(){
    // Determine parent page ID
    $parent_page_id = ( \'0\' != $post->post_parent ? $post->post_parent : $post->ID );

    // Get child pages as array
    $args = array(
        \'child_of\' => $parent_page_id,
        \'post_type\' => \'page\',
        \'orderby\' => \'menu_order\',
        \'order\' => \'ASC\',
        \'posts_per_page\' => 100,
     );
    $child_query = get_pages($args);
    print_r($child_query);

    $child_pages = array();

    while ( $child_query->have_posts()) {
        $child_query->the_post();
            if ( \'\' != get_the_title() ) {
        $title = get_the_title();
        $excerpt = get_the_excerpt();
        $id = get_the_ID();
        $thumbnail = get_the_post_thumbnail(\'(thumbnail\');
        $permalink = get_permalink();
        $child_pages[] = array(\'title\' => $title, \'excerpt\' => $excerpt, \'id\' => $id, \'thumbnail\' => $thumbnail, \'permalink\' => $permalink);
        }
    }
} //end child_query
private function child_query_frontend($child_pages) {
        echo \'<div class="row-fluid">\';
        echo \'<ul class="thumbnails">\';
        foreach ($child_pages as $key => $value) {
            ?>
            <li class="span3">
        <div class="thumbnail">
            <img src="<?php echo $value[\'thumbnail\']; ?>" alt="" height="42" width="42">
            <div class="caption">
            <h3><?php echo $value[\'title\']; ?></h3>
            <p><?php echo $value[\'excerpt\'] ?></p>
            <p><a class="btn btn-primary" href="<?php echo $value[\'permalink\']; ?>">Läs mer.</a></p>
            </div>
        </div>
    </li>
        <?php }
        echo \'</ul><!--thumbnails-->\';
        echo \'</div><!--row-fluid-->\';
} //end frontend

}// end class

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

看看这个,开始吧。然后从这里开始工作。你有很多地方做错了,我想这会澄清的。

<?php
/*
Plugin Name: Child Pages Query
Author: Sten Winroth
Plugin URI: 
Description: 
Version: 1.0
Author URI: 
Domain Path: /languages
Text Domain: 
*/

class childPagesQuery
{
    private $ver = \'1.0\';

    function __construct()
    {
        add_action( \'init\', array($this, \'init\') );
    }

    public function init()
    {
        add_shortcode( \'child_query\', array($this, \'child_query_frontend\') );
    }

    public function child_query()
    {
        global $post;

        // Determine parent page ID
        $parent_page_id = ( \'0\' != $post->post_parent ? $post->post_parent : $post->ID );

        // Get child pages as array
        $args = array(
            \'child_of\' => $parent_page_id,
            \'post_type\' => \'page\',
            \'orderby\' => \'menu_order\',
            \'order\' => \'ASC\',
            \'posts_per_page\' => 100,
        );
        $child_query = get_pages($args);
        print_r($child_query);
    }

    public function child_query_frontend( $atts )
    {
        /**/
        $child_query = $this->child_query();
        echo \'<pre style="font-size:0.7em;">\';
        print_r($child_query);
        echo "</pre>\\n";
        /**/
    }
}

new childPagesQuery();
EDIT: 澄清传递给的$atts变量child_query_frontend().

如果您使用这样的短代码:

[child_query]
不会向该变量传递任何内容,它将是空的,但它应该仍然存在,因为shortcode函数将尝试向它传递一个空数组。

如果您使用这样的短代码:

[child_query post_id="5"]
那么$atts将类似于$atts[\'post\\u id\']。看一看Shortcode API documentation 在Wordpress上。org获取有关属性如何工作以及如何使用属性的更好示例的更多信息。

结束