Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP/Wordpress] Image saven naar Custom Field... werktnie!?

Pagina: 1
Acties:

  • rednol
  • Registratie: Juli 2009
  • Laatst online: 06-02-2022
Poging 2.. excuses.

Ik probeer hier een x aantal images te saven naar Custom Fields. De rest van de input doet het (wat text inputs) maar de image niet.. of nouja half..

Ik ben hier al een tijdje mee bezig maar kom er gewoon echt niet uit. Heb wel een patroon kunnen ontdekken in de rare 'bugg' (?)

Eerste save: Plaatjes worden gesaved en attachment ID word geshowd in de front end. Bijvoorbeeld "807"

Tweede save: Image ID en/of link verdwijnen uit de backend, aan de voorkant is inmiddels een plaatje te zien (rara... hoe kan dat)..

Derde save: Alles van customfield Images is weg?! Dus de front end laat alleen nog maar de rest zien en niks meer van image..


Dit is de code voor 1 van de custom fields tabel.

(ik heb 3 tabellen. 1 is de standaard tabel die word geshowed als je boven in op "Add New" klikt, de 2e kun je editen in de backend dus "add image" en tekst invullen e.d.
en de 3e laad ie in als je op add another klikt (krijg je nog een rij met custom fields(word ook gesaved))).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 <!--               FRONT -  EDITABLE        -->
            <tr>

                <td><input type="text" class="widefat" name="date[]"
                           value="<?php if ($field['date'] != '') echo esc_attr($field['date']); ?>"/></td>

                <td><input type="text" class="widefat" name="name[]"
                           value="<?php if ($field['name'] != '') echo esc_attr($field['name']); ?>"/></td>

                <td><input type="text" class="widefat" name="text[]"
                           value="<?php if ($field['text'] != '') echo esc_attr($field['text']); ?>"/></td>

                <td>
                    <?php
//                        $image = get_template_directory_uri().'/images/image.png';
                    $image = wp_get_attachment_image_src($field['image'], 'medium'); $image =   $image[0];
                    echo $image;
                    ?>

                    <input type="hidden" class="custom_upload_image" name="image[]"

                           value="<img src=' <?php echo $image ?> ' class='custom_preview_image' alt='' /><br />"/>

                    <input class="custom_upload_image_button button" type="button" value="Choose Image"/>

                    <small><a href="#" class="custom_clear_image_button">Remove Image</a></small>
                </td>

                <td><a class="button remove-row" href="#">Remove</a></td>

            </tr>


Hier is het stuk dat ik alles save.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
add_action('save_post', 'hhs_repeatable_meta_box_save');
function hhs_repeatable_meta_box_save($post_id)
{
if (!isset($_POST['hhs_repeatable_meta_box_nonce']) ||
    !wp_verify_nonce($_POST['hhs_repeatable_meta_box_nonce'], 'hhs_repeatable_meta_box_nonce')
)
    return;

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
    return;

if (!current_user_can('edit_post', $post_id))
    return;

$old = get_post_meta($post_id, 'repeatable_fields');
$new = array();

$dates = $_POST['date'];
$names = $_POST['name'];
$texts = $_POST['text'];
$images = $_POST['image'];

$count = count($names);

for ($i = 0; $i < $count; $i++) {

    if (!empty($names[$i])) :
        $new[$i]['name'] = $names[$i];

        if (!empty($dates[$i])) {
            $new[$i]['date'] = $dates[$i];
        };
        if (!empty($texts[$i])) {
            $new[$i]['text'] = $texts[$i];
        };

        if (!empty($images[$i])) {
            $new[$i]['image'] = $images[$i];
        };
    endif;


    if (!empty($new) && $new != $old)
        update_post_meta($post_id, 'repeatable_fields', $new);
    elseif (empty($new) && $old)
        delete_post_meta($post_id, 'repeatable_fields', $old);
  }

}


Hier moet het plaatje in komen : http://i.imgur.com/1MmnxhY.png en dan moet hij op de backend en front end weer naar voren komen..

Dit krijg ik met print_r(plaatje) op de EERSTE save:

code:
1
Array ( [name] => 3123 [date] => 12 [text] => 123 [image] => 807 )


Ik hoop dat iemand die dit leest in één opslag ziet wat hier de fout is. Ik ben student 2e jaars Applicatie Ontwikkelaar en kom er op het moment even niet meer uit.

Bvd,

Erwin

  • FotW
  • Registratie: Juli 2012
  • Laatst online: 24-10 13:17
Waarom stop je een image in een input field? Weet niet of je probleem hier ligt maar dat was het eerste dat mij opviel.

value="<img src=' <?php echo $image ?> ' class='custom_preview_image' alt='' /><br />"/>

  • rednol
  • Registratie: Juli 2009
  • Laatst online: 06-02-2022
Ik heb een deel van die code van internet af maar wel omgebouwd. Bron : http://code.tutsplus.com/...-3-extra-fields--wp-23821 en dan ctrl + f "image"


Maar ik weet niet waar ik het anders in zou moeten gooien input type image werkt weer heel anders. Toch?

  • Fraekje
  • Registratie: April 2004
  • Laatst online: 19-08-2024
Precies wat FotW zegt, ik snap niet zo goed waarom je dit in een (ook nog eens hidden) text-field wilt doen? Weet je zelf waarom je dit probeert?
Als ik kijk naar je inspiratie-bron zetten ze het plaatje niet in de value maar los onder de input. Ik denk dus dat je een stukje code mist op je regels: 20 en 22.

code:
1
2
<input type="hidden" class="custom_upload_image" name="image[]" value="plaatje">
<img src=' <?php echo $image ?> ' class='custom_preview_image' alt='' /><br />"/>


Dit denk ik omdat je eerst de input type 2 keer een class had gegeven. custom_upload_image en custom_preview_image. Ik weet niet of dit je bedoeling was maar dan kun je dat ook in één gedeelte quote zetten als class="custom_upload_image custom_preview_image".

Wat ook een beetje vreemd is; is de benaming voor iedere input field. Je geeft steeds een array mee lijkt het? Of dat lijk je te proberen wat natuurlijk niet gaat. Is dit bewust of? HTML kan dingen als date[],name[] en text[] niet uitlezen naar een waarde maar zal deze naam letterlijk zo invullen.

Offtopic: Tabels zijn zoooo Web 1.0 :P

  • rednol
  • Registratie: Juli 2009
  • Laatst online: 06-02-2022
Zal er maandag naar kijken. Maar het is een array omdat er wel 100 name, date, text of image fields kunnen worden aangemaakt

  • rednol
  • Registratie: Juli 2009
  • Laatst online: 06-02-2022
Gooi dit topic maar weg. Ik kan het probleem of wat ik probeer niet verwoorden. Zit vast in me hoofd :P

kom er vanzelf wel :D !

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Dus... je wil een afbeelding, als TEKST opslaan in een custom field? Dat gaat niet, daar zijn de custom fields ook niet voor gemaakt.

Je input moet type="file" (met juist form enctype) zijn en wil je waarschijnlijk iets als media_handle_upload gebruiken.

Dan het resulterende attachment ID opslaan, in je custom meta field.

  • rednol
  • Registratie: Juli 2009
  • Laatst online: 06-02-2022
Heb het gefixt :) !

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<td>
                        <?php
                        $image = get_template_directory_uri().'/images/image.png';

                        echo '<span class="custom_default_image" style="display:none">'.$image.'</span>';
                        ?>

                        <input type="hidden" class="custom_upload_image" name="image[]"
                               value="<?php if ($field['image'] !='') echo $field['image'] ?>" />

                        <img src="<?php echo wp_get_attachment_url($field['image'], 'medium') ?>" class="custom_preview_image" alt="" /><br />

                        <input class="custom_upload_image_button button" type="button" value="Choose Image"/>

                        <small><a href="#" class="custom_clear_image_button">Remove Image</a></small>
                    </td>


en om op te halen :

code:
1
 <img src="<?php echo wp_get_attachment_url($metakey['image'])?>"/>


Kunnen nog wel wat dingen in zitten wat niet klopt, ben het nu aan het uitschiften.
TheNephilim schreef op dinsdag 28 oktober 2014 @ 15:29:
Dus... je wil een afbeelding, als TEKST opslaan in een custom field? Dat gaat niet, daar zijn de custom fields ook niet voor gemaakt.

Je input moet type="file" (met juist form enctype) zijn en wil je waarschijnlijk iets als media_handle_upload gebruiken.

Dan het resulterende attachment ID opslaan, in je custom meta field.
Het was de bedoeling dat je via t custom field in de wordpress media library kon. Verder is de "input text" nu simpelweg een plceholder voor het ID.

Volgens mij zit ik nu wel in de goede richting :D

Ben trouwens 2e jaars student "Applicatie/media ontwikkelaar" dus sorry voor een noob niveau :P

proof:

Front:
http://i.imgur.com/JzhBJS7.png

Back:
http://i.imgur.com/K6IY63g.jpg

Nu bezig met resizen :*)

[ Voor 17% gewijzigd door rednol op 28-10-2014 15:44 ]

Pagina: 1