Jump to content
  • 0

Как изменить значение атрибута в input


Mila
 Share

Question

Я вывожу на странице редактирования записи (движок - Wordpress) дополнительное поле для вставки в него ссылки на изображение, выводимое в статье.

Фунцция, используемая в нем работает с custom_field, ключ - thumbnail

Вот код:

<?php 
// custom field at add/edit post
$delightb_custom_field['thumbnail'] = array(
"type" => "text",
"name" => "thumbnail",
"label" => "<p>Изображение</p>",
"std" => "",
"desc" => "Загрузите изображение и вставьте сюда прямую ссылку на него.",
"help" => "",
);

function delightb_customfields_content() {
global $post,$delightb_custom_field;
echo '<table width="100%" cellpadding="0" cellspacing="0">'."\n";
foreach ($delightb_custom_field as $single_customfield) {
$customfieldvalue = get_post_meta($post->ID,$single_customfield["name"],true);
if ($customfieldvalue == '' || !isset($customfieldvalue)) {
$customfieldvalue = $single_customfield['std'];
}
echo '<tr>';
echo '<th style="width:120px;text-align:left;padding:10px 10px 0 10px;"><label>'.$single_customfield['label'].'</label>';
if ($single_customfield["help"] != '') {
echo '<p><small>'.$single_customfield["help"].'</small></p>';
}
echo '</th><td style="padding-top:10px;"><input size="90" type="'.$single_customfield['type'].'" value="'.$customfieldvalue.'" name="delightb_'.$single_customfield["name"].'" onblur="if(this.value!=\'\')document.getElementById(\'preview_of_'.$single_customfield["name"].'\').innerHTML=\'<center><img src=\\\'\'+this.value+\'\\\' width=\\\'110\\\' height=\\\'80\\\' style=\\\'border:1px solid #dddddd;padding:2px;\\\' /></center>\';" id="delightb_customfield_'.$single_customfield['name'].'" /></td>'."\n";
echo '</tr>';
echo '<tr><td style="width:120px;border-bottom:1px dotted #aaaaaa;padding:0"><div id="preview_of_'.$single_customfield["name"].'">';
if ($customfieldvalue!='') { echo '<img src="'.$customfieldvalue.'" width="110" height="80" style="border:1px solid #dddddd;padding:2px;margin:0 0 10px 10px" />'; }
echo '</div></td><td style="border-bottom:1px dotted #aaaaaa;padding:0;margin:0">'.$single_customfield['desc'].'</td></tr>';
}
echo '</table>';
}

function delightb_customfields_insert($postID) {
global $delightb_custom_field;
foreach ($delightb_custom_field as $single_customfield) {
$var = "delightb_".$single_customfield["name"];
if (isset($_POST[$var])) {
if( get_post_meta( $postID, $single_customfield["name"] ) == "" )
add_post_meta($postID, $single_customfield["name"], $_POST[$var], true );
elseif($_POST[$var] != get_post_meta($postID, $single_customfield["name"], true))
update_post_meta($postID, $single_customfield["name"], $_POST[$var]);
elseif($_POST[$var] == "")
delete_post_meta($postID, $single_customfield["name"], get_post_meta($postID, $single_customfield["name"], true));}}}
function delightb_meta_box() {
if ( function_exists('add_meta_box') ) {
add_meta_box('zenv-settings',$GLOBALS['themename'].' Изображения','delightb_customfields_content','post','normal');
add_meta_box('zenv-settings',$GLOBALS['themename'].' Изображения','delightb_customfields_content','page','normal');
}
}

add_action('admin_menu', 'delightb_meta_box');
add_action('wp_insert_post', 'delightb_customfields_insert');
?>

Мне нужно, чтобы поле для ввода изображения имело type="file", т.е. работала загрузка изображений с компьютера пользователя.

Вот код:

<input size="90" type="'.$single_customfield['type'].'" value="'.$customfieldvalue.'" name="delightb_'.$single_customfield["name"].'" onblur="if(this.value!=\'\')document.getElementById(\'preview_of_'.$single_customfield["name"].'\').innerHTML=\'<center><img src=\\\'\'+this.value+\'\\\' width=\\\'110\\\' height=\\\'80\\\' style=\\\'border:1px solid #dddddd;padding:2px;\\\' /></center>\';" id="delightb_customfield_'.$single_customfield['name'].'" />

Как в input заменить значение атрибута type?

Помогите, пожалуйста, это сделать.

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Все, разобралась - в принципе работатет.

Но теперь возникла еще одна проблема:

Параметр value="'.$customfieldvalue.'" передает в произвольное поле адрес картинки, т.е. путь к ней+название.

Если заменить "type" => "text" на "type" => "file" - то передается только название картинки, а поскольку путь к ней не передается, то неизвестно, где искать эту картинку - в итоге она не загружается.

Поставила перед value="/wp-content/uploads/'.$customfieldvalue.'" - не помогло.

Помогите, плиз, решить эту проблему.

Link to comment
Share on other sites

  • 0
Ох и знатная мешанина. Жаль, на govnokod.ru такое уже минусуют, потому что бородатый боян.

На трезвую голову такого не пишут, факт

Легче всего раскритировать чужую работу.

Если вы такой грамотный, лучше бы подсказали. как это все привести к нормальному и работающему виду.

Link to comment
Share on other sites

  • 0

Да не вопрос

<form action="?" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"><br>
<input type="submit">
</form>
<?
if (isset($_FILES['myfile']))
move_uploaded_file($_FILES['myfile']['tmp_name'],'files_folder/'.basename($_FILES['myfile']['name']));
?>

Остаётся только адаптировать под свою задачу

Link to comment
Share on other sites

  • 0

Int, к сожалению, не работает ваша конструкция.

Может я неправильно "адаптировала под свои задачи"?

Можете глянуть, в чем я ошиблась?

<?php 
// custom field at add/edit post
$delightb_custom_field['image'] = array(
"type" => "text",
"name" => "image",
"label" => "",
"std" => "",
"desc" => "Загрузите изображение и вставьте сюда прямую ссылку на него.<br />
Например, так: <b>/wp-content/uploads/1.jpg</b><br />
Размер изображения: 500px на 280px.",
"help" => "",
);
$delightb_custom_field['thumbnail'] = array(
"type" => "text",
"name" => "thumbnail",
"label" => "",
"std" => "",
"desc" => "Загрузите изображение и вставьте сюда прямую ссылку на него.<br />
Например, так: <b>/wp-content/uploads/2.jpg</b><br />
Размер изображения: 220px на 135px",
"help" => "",
);

function delightb_customfields_content() {
global $post,$delightb_custom_field;
echo '<table width="100%" cellpadding="0" cellspacing="0">'."\n";
foreach ($delightb_custom_field as $single_customfield) {
$customfieldvalue = get_post_meta($post->ID,$single_customfield["name"],true);
if ($customfieldvalue == '' || !isset($customfieldvalue)) {
$customfieldvalue = $single_customfield['std'];
}
echo '<tr>';
echo '<th style="width:120px;text-align:left;padding:10px 10px 0 10px;"><label>'.$single_customfield['label'].'</label>';
if ($single_customfield["help"] != '') {
echo '<p><small>'.$single_customfield["help"].'</small></p>';
}
echo '</th><td style="padding-top:10px;"><form enctype="multipart/form-data"><input size="90" type="file" value="'.$customfieldvalue.'" name="delightb_'.$single_customfield["name"].'" onblur="if(this.value!=\'\')document.getElementById(\'preview_of_'.$single_customfield["name"].'\').innerHTML=\'<center><img src=\\\'\'+this.value+\'\\\' width=\\\'110\\\' height=\\\'80\\\' style=\\\'border:1px solid #dddddd;padding:2px;\\\' /></center>\';" id="delightb_customfield_'.$single_customfield['name'].'" /><input type="submit"></form></td>'."\n";

if (isset($_FILES['.$single_customfield["name"].']))
move_uploaded_file($_FILES['.$single_customfield["name"].']['tmp_name'],'/wp-content/uploads/'.basename($_FILES['.$single_customfield["name"].']['.$single_customfield["name"].']));


echo '</tr>';
echo '<tr><td style="width:120px;border-bottom:1px dotted #aaaaaa;padding:0"><div id="preview_of_'.$single_customfield["name"].'">';
if ($customfieldvalue!='') { echo '<img src="/wp-content/uploads/'.$customfieldvalue.'" width="110" height="80" style="border:1px solid #dddddd;padding:2px;margin:0 0 10px 10px" />'; }
echo '</div></td><td style="border-bottom:1px dotted #aaaaaa;padding:0;margin:0">'.$single_customfield['desc'].'</td></tr>';
}
echo '</table>';
}

function delightb_customfields_insert($postID) {
global $delightb_custom_field;
foreach ($delightb_custom_field as $single_customfield) {
$var = "delightb_".$single_customfield["name"];
if (isset($_POST[$var])) {
if( get_post_meta( $postID, $single_customfield["name"] ) == "" )
add_post_meta($postID, $single_customfield["name"], $_POST[$var], true );
elseif($_POST[$var] != get_post_meta($postID, $single_customfield["name"], true))
update_post_meta($postID, $single_customfield["name"], $_POST[$var]);
elseif($_POST[$var] == "")
delete_post_meta($postID, $single_customfield["name"], get_post_meta($postID, $single_customfield["name"], true));}}}
function delightb_meta_box() {
if ( function_exists('add_meta_box') ) {
add_meta_box('zenv-settings',$GLOBALS['themename'].' Изображения','delightb_customfields_content','post','normal');
add_meta_box('zenv-settings',$GLOBALS['themename'].' Изображения','delightb_customfields_content','page','normal');
}
}

add_action('admin_menu', 'delightb_meta_box');
add_action('wp_insert_post', 'delightb_customfields_insert');
?>

Edited by Mila
Link to comment
Share on other sites

  • 0

хоть бы немного привели что ли к такому виду:

<?php
// custom field at add/edit post
$delightb_custom_field['image'] = array(
"type" => "text",
"name" => "image",
"label" => "",
"std" => "",
"desc" => "Загрузите изображение и вставьте сюда прямую ссылку на него.<br />
Например, так: <b>/wp-content/uploads/1.jpg</b><br /><br />
Размер изображения: 500px на 280px.",
"help" => "",
);
$delightb_custom_field['thumbnail'] = array(
"type" => "text",
"name" => "thumbnail",
"label" => "",
"std" => "",
"desc" => "Загрузите изображение и вставьте сюда прямую ссылку на него.<br />
Например, так: <b>/wp-content/uploads/2.jpg</b><br /><br />
Размер изображения: 220px на 135px",
"help" => "",
);

function delightb_customfields_content() {
global $post,$delightb_custom_field;
echo '
<table width="100%" cellpadding="0" cellspacing="0">'."\n";
foreach ($delightb_custom_field as $single_customfield) {
$customfieldvalue = get_post_meta($post->ID,$single_customfield["name"],true);
if ($customfieldvalue == '' || !isset($customfieldvalue)) {
$customfieldvalue = $single_customfield['std'];
}
echo '<tr>';
echo '<tr>
<th style="width:120px;text-align:left;padding:10px 10px 0 10px;">
<label>'.$single_customfield['label'].'</label>';
if ($single_customfield["help"] != '') {
echo '<p><small>'.$single_customfield["help"].'</small></p>';
}
echo '
</th>
<td style="padding-top:10px;">
<form enctype="multipart/form-data">
<input size="90" type="file" value="'.$customfieldvalue.'"
name="delightb_'.$single_customfield["name"].'"
onblur="if(this.value!=\'\')document.getElementById(\'preview_of_'.$single_customfield["name"].'\').innerHTML=\'
<center>
<img src=\\\'\'+this.value+\'\\\' width=\\\'110\\\' height=\\\'80\\\' style=\\\'border:1px solid #dddddd;padding:2px;\\\' />
</center>\';"
id="delightb_customfield_'.$single_customfield['name'].'" />
<input type="submit">
</form>
</td>'."\n";

if (isset($_FILES['.$single_customfield["name"].']))
move_uploaded_file($_FILES['.$single_customfield["name"].']['tmp_name'],'
/wp-content/uploads/'.basename($_FILES['.$single_customfield["name"].']['.$single_customfield["name"].']));


echo '</tr>';
echo '<tr>
<td style="width:120px;border-bottom:1px dotted #aaaaaa;padding:0">
<div id="preview_of_'.$single_customfield["name"].'">';
if ($customfieldvalue!='') {
echo '
<img src="/wp-content/uploads/'.$customfieldvalue.'" width="110" height="80"
style="border:1px solid #dddddd;padding:2px;margin:0 0 10px 10px" />';
}
echo '
</div>
</td>
<td style="border-bottom:1px dotted #aaaaaa;padding:0;margin:0">'.$single_customfield['desc'].'</td>
</tr>';
}
echo '</table>';
}

function delightb_customfields_insert($postID) {
global $delightb_custom_field;
foreach ($delightb_custom_field as $single_customfield) {
$var = "delightb_".$single_customfield["name"];
if (isset($_POST[$var])) {
if( get_post_meta( $postID, $single_customfield["name"] ) == "" )
add_post_meta($postID, $single_customfield["name"], $_POST[$var], true );
elseif($_POST[$var] != get_post_meta($postID, $single_customfield["name"], true))
update_post_meta($postID, $single_customfield["name"], $_POST[$var]);
elseif($_POST[$var] == "")
delete_post_meta($postID, $single_customfield["name"], get_post_meta($postID, $single_customfield["name"], true));
}
}
}
function delightb_meta_box() {
if ( function_exists('add_meta_box') ) {
add_meta_box('zenv-settings',$GLOBALS['themename'].' Изображения','delightb_customfields_content','post','normal');
add_meta_box('zenv-settings',$GLOBALS['themename'].' Изображения','delightb_customfields_content','page','normal');
}
}

add_action('admin_menu', 'delightb_meta_box');
add_action('wp_insert_post', 'delightb_customfields_insert');
?>

пожалейти наши глазки!

Link to comment
Share on other sites

  • 0

Не люблю заниматься деобфускацией. Может просто с нуля перепишете?

Не люблю заниматься деобфускацией. Может просто с нуля перепишете?

echo '<tr>';
echo '<tr>

А это, вообще, что?

Знать бы ещё, что за get_post_meta и прочие функции... Всё же проще переписать по-своему.

Вот, кстати, вижу работу с $_POST, но не вижу работу с $_FILES

Link to comment
Share on other sites

  • 0
echo '<tr>';
echo '<tr>

А это, вообще, что?

так делают только тогда, когда выводят цикл с <td>шками, но тут сомневаюсь что именно для этого...

Вот, кстати, вижу работу с $_POST, но не вижу работу с $_FILES

а вот это похоже на типичную и распространенную ошибку.

Link to comment
Share on other sites

  • 0
Не люблю заниматься деобфускацией. Может просто с нуля перепишете?

Не люблю заниматься деобфускацией. Может просто с нуля перепишете?

Int, если бы я могла написать это сама - я бы так и сделала,

к сожалению, мои начальные знания php не позволяют это сделать.

Знать бы ещё, что за get_post_meta и прочие функции... Всё же проще переписать по-своему.

get_post_meta - это стандартная функция wordpress, выводящая информацию из произвольного поля.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy