0

ユーザーの写真でプラグインを作成していたので、画像をBLOBでデータベースに保存しました

データベースに画像を取得しようとしたとき、それは機能していませんでした。

私のコードuser-management.php

<table cellpadding="5" cellspacing="0">
    <thead>
    <tr>
        <th>Username</th>
        <th>Email</th>
        <th>First Name</th>
        <th>Middle Name</th>
        <th>Last Name</th>
        <th>Status</th>
        <th>Photo</th>
        <th>Date</th>
        <th>Option</th>
     </tr>
    </thead>
    <tbody>
<?php
global $wpdb;
$myadmin = $wpdb->get_results( "SELECT * FROM jon_admin" );
$color1 = "#F8F8F8"; 
$color2 = "#FFFFFF"; 
$row_count = 0;
foreach ($myadmin as $admin) {
    $myadminphoto = $wpdb->get_row( "SELECT * FROM jon_admin_photo WHERE user_login = '".$admin->user_login."' " );
$row_color = ($row_count % 2) ? $color1 : $color2;
    ?>
        <tr>
            <td style="background-color:<? echo $row_color; ?>"><?php echo $admin->user_login; ?></td>
            <td style="background-color:<? echo $row_color; ?>"><?php echo $admin->email; ?></td>
            <td style="background-color:<? echo $row_color; ?>"><?php echo $admin->fname; ?></td>
            <td style="background-color:<? echo $row_color; ?>"><?php echo $admin->mname; ?></td>
            <td style="background-color:<? echo $row_color; ?>"><?php echo $admin->lname; ?></td>
            <td style="background-color:<? echo $row_color; ?>"><?php echo $admin->user_status; ?></td>
            <td style="background-color:<? echo $row_color; ?>">
            <img src="<?php echo plugins_url( 'photo.php', __FILE__ ); ?>?pid=<?php echo $myadminphoto->apid; ?>&img=adminphoto" />                </td>
            <td style="background-color:<? echo $row_color; ?>"><?php echo $admin->date; ?></td>
            <td style="background-color:<? echo $row_color; ?>">edit view delete</td>
        </tr>
<?php
$row_count++;
}       
?>
    </tbody>
</table>

この行が表示された場合、<img src="<?php echo plugins_url( 'photo.php', __FILE__ ); ?>?pid=<?php echo $myadminphoto->apid; ?>&img=adminphoto" /> photo.phpである別のページを介して画像を呼び出しています

その後、photo.phpのファイルはこれでした

if ( $_GET['img'] == 'adminphoto' ) {
    global $wpdb;
        ## VIEW ADMIN PHOTO
        $id = $_GET['pid'];
        $get_photo =  $wpdb->get_row( "SELECT * FROM jon_admin_photo WHERE apid = '".$id."'" );

            $content = $get_photo->image;
            $filetype = $get_photo->imgcode;
            header('Content-type: $filetype');
            echo $content;

    }

さあ、画像表示もエラー表示もありません。

しかし、私がこのようなことをすると、写真のURLを取得し、右クリックして新しいタブを開き、エラーが表示されます Fatal error: Call to a member function get_row() on a non-object in C:\xampp\htdocs\web\advanced-nanny\wp-content\plugins\jon-user-management\photo.php on line 37

私のコードに何か問題がありますか?

ありがとう教えてください...

4

1 に答える 1

1

phpファイルでwordpressをインスタンス化する必要があります。

ロジックを壊さずにWordpressでこれを行う最も簡単な方法は、プラグインに次のような関数を定義して、ajax呼び出しのように使用することだと思います。

function MY_FUNCTION() {
    if ( $_GET['img'] == 'adminphoto' ) {
        global $wpdb;
        ## VIEW ADMIN PHOTO
        $id = $_GET['pid'];
        $get_photo =  $wpdb->get_row( "SELECT * FROM jon_admin_photo WHERE apid = '".$id."'" );

            $content = $get_photo->image;
            $filetype = $get_photo->imgcode;
            header('Content-type: $filetype');
            echo $content;

    }
    exit();
}
add_action('wp_ajax_MY_FUNCTION', 'MY_FUNCTION');
add_action('wp_ajax_nopriv_MY_FUNCTION', 'MY_FUNCTION');//for users that are not logged in

次に、このように呼び出すことができます:

<img src="<?php echo admin_url('admin-ajax.php'); ?>?action=MY_FUNCTION&pid=<?php echo $myadminphoto->apid; ?>&img=adminphoto" />
于 2013-01-31T15:40:13.847 に答える