如何在wordpress插件的选项页面获取整个博客的图像?

时间:2013-04-13 06:41:32

标签: php wordpress-plugin wordpress

我必须在插件的选项页面中获取博客的所有图像来源,我正在制作插件选项页面,如下所示..Plz查看它..

public function add_plugin_page(){  
                add_options_page('Settings Admin', 'Plugin_options', 'manage_options', 'test-setting-admin', array($this, 'create_admin_page'));
            }

以下代码适用于我的插件选项页

public function create_admin_page(){
        ?>
    <div class="wrap">

    <?php screen_icon(); ?>

    <form action="options.php" method="post" id="<?php echo $plugin_id; ?>_options_form" name="<?php echo $plugin_id; ?>_options_form">

    <?php settings_fields($plugin_id.'_options'); ?>

    <h2>kk Plugin Options &raquo; Settings</h2>

   <table border="1" bordercolor="#FFCC00" style="background-color:#FFFFCC; margin-top:22px"  width="25%" cellpadding="2" cellspacing="1">
       <tbody>
       <tr>
        <td style="padding-left:8px;font-family:Verdana, Geneva, sans-serif;color:#666;"><h3>Blog Id:</h3></td>
        <td><p><?php echo$abc?></p></td>
    </tr>
    <tr>
        <td style="padding-left:8px;font-family:Verdana, Geneva, sans-serif;color:#666;"><h3>API Key:</h3></td>
        <td><input type="text" name="kkpo_quote" value="<?php echo get_option('kkpo_quote'); ?>" /></td>
    </tr>
        </tbody>

</table>
   <div id="mainCHImage" style="position:relative;height:'.$imgHeight.'px;width:'.$width.'px;">
         <img id="paletlyIcon" style="position:absolute;left:'.$imgWidth.'px;top:'.$imgHeight.'px;z-index:9999;cursor:pointer;background:none;border:none;" src="http://Images/favIcon.png" onclick="get_images()">'.   
        <img style="background:none;border:none;"></div>


    </form>

</div>
    <?php
    }

$ abc是我想要所有图像源的变量..因为我已经写了一个单独的函数

public function get_images(){
    if(is_single() || is_page() || is_home()||!is_admin() ){  
    global $post; 
    global $wpdb;

    $query_images = new WP_Query( $query_images_args );
    $images = array();

         foreach ( $query_images->posts as $image) {      
         $images[]= wp_get_attachment_url( $image->ID );
                 $abc=($images);
                 echo $abc;
                 }

    }


}

但我收到错误

ReferenceError: get_images is not defined
[Break On This Error]   

get_images();

我在我的构造中添加了该功能,即

add_action('IMages_grab', array(&$this, 'get_images'));
add_filter('IMages_grab', array(&$this, 'get_images'));

2 个答案:

答案 0 :(得分:0)

老兄,你的代码在很多层面都是错误的! (我现在只表达我自己的意见。)

  1. 您有$query_images = new WP_Query( $query_images_args );,但未定义$query_images_arg(通过定义参数修复)

  2. 您正在构建某种管理菜单,但随后您将!is_admin()的条件置于无效(通过决定/定义其运行位置来修复)

  3. 您有很多语法错误,例如echo$abc?(已修复为echo $abc

    3.1。 $ abc应该是一个数组?然后你甚至不能使用echo print_r($abc);

  4. 您正在使用settings APi,这是序列化数组,然后您调用echo get_option('kkpo_quote');之类的单个选项(修复决定使用哪种方法)

  5. 这是最重要的一个,为什么人们希望将整个网站的所有图像都放到一个数组中,还有更多,回应它?你能想象一下拥有10,000张图片甚至只有300张图片的网站会发生什么吗?

  6. 现在,你的代码显然是某种尝试或者是切割的练习。粘贴插件开发。并给出一个好的答案意味着你将不得不更好地解释你的意图,但你可以从修复我在上面所写的内容开始,而不是完整,列出......

答案 1 :(得分:0)

我同意@ObmerkKronen答案的大部分内容,但是点5。在我看来,问题的核心是哪个。

是的,想要一个包含所有帖子的数组(附件是帖子类型)是有效的。 10K阵列可能不会那么大,取决于它的使用方式。

以下示例显示管理员通知,其中包含指向媒体库中所有图像的链接。 Consult the Codex了解此处使用的功能。应该很容易将其改编为插件的选项页面。

add_action( 'admin_notices', 'get_all_images_so_15985067' );

function get_all_images_so_15985067() 
{
    // get all images
    $args = array( 
        'post_type' => 'attachment', 
        'post_mime_type' => 'image',
        'numberposts' => -1,
    );
    $_attachments = get_posts( $args );

    // no images found, do nothing
    if ( empty( $_attachments ) )
        return;

    // build array only with IDs
    $attachments = array();
    foreach ( $_attachments as $key => $val ) {
        $attachments[ $val->ID ] = $_attachments[ $key ];
    }

    // print thumbnail links
    echo '<div class="updated">';
    foreach ( $attachments as $att_id => $attachment ) {
        echo wp_get_attachment_link( 
            $att_id, 
            'thumbnail', 
            false, 
            false, 
            $attachment->post_title 
        ) . "<br>";
    }
    echo '</div>';
}