HamedPC 1 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 سلام . بنده با استفاده از کد زیر در Functions.php متاباکس داینامیک اضافه کردم . حالا با چه کدی توی قالب به صورت داینامیک فراخونیش کنم؟<?php add_action( 'add_meta_boxes', 'dynamic_add_custom_box' );/* Do something with the data entered */add_action( 'save_post', 'dynamic_save_postdata' );/* Adds a box to the main column on the Post and Page edit screens */function dynamic_add_custom_box() {add_meta_box( 'dynamic_sectionid', __( 'My Tracks', 'myplugin_textdomain' ), 'dynamic_inner_custom_box', 'post');}/* Prints the box content */function dynamic_inner_custom_box() {global $post;// Use nonce for verificationwp_nonce_field( plugin_basename( __FILE__ ), 'dynamicMeta_noncename' );?><div id="meta_inner"><?php//get the saved meta as an arry$songs = get_post_meta($post->ID,'songs',true);$c = 0;if ( count( $songs ) > 0 ) { foreach( $songs as $track ) { if ( isset( $track['title'] ) || isset( $track['track'] ) ) { printf( '<p>Song Title <input type="text" name="songs[%1$s][title]" value="%2$s" /> -- Track number : <input type="text" name="songs[%1$s][track]" value="%3$s" /><span class="remove">%4$s</span></p>', $c, $track['title'], $track['track'], __( 'Remove Track' ) ); $c = $c +1; } }}?><span id="here"></span><span class="add"><?php _e('Add Tracks'); ?></span><script>var $ =jQuery.noConflict();$(document).ready(function() { var count = <?php echo $c; ?>; $(".add").click(function() { count = count + 1; $('#here').append('<p> Song Title <input type="text" name="songs['+count+'][title]" value="" /> -- Track number : <input type="text" name="songs['+count+'][track]" value="" /><span class="remove">Remove Track</span></p>' ); return false; }); $(".remove").live('click', function() { $(this).parent().remove(); });});</script></div><?php}/* When the post is saved, saves our custom data */function dynamic_save_postdata( $post_id ) {// verify if this is an auto save routine.// If it is our form has not been submitted, so we dont want to do anythingif ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;// verify this came from the our screen and with proper authorization,// because save_post can be triggered at other timesif ( !isset( $_POST['dynamicMeta_noncename'] ) ) return;if ( !wp_verify_nonce( $_POST['dynamicMeta_noncename'], plugin_basename( __FILE__ ) ) ) return;// OK, we're authenticated: we need to find and save the data$songs = $_POST['songs'];update_post_meta($post_id,'songs',$songs);} نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 <?php if (get_post_meta($post->ID, 'songs')) {echo get_post_meta($post->ID, 'songs', true);} ?> 1 نقل قول لینک به ارسال
HamedPC 1 ارسال شده در تیر 93 مالک گزارش بازنشر ارسال شده در تیر 93 (ویرایش شده) <?php if (get_post_meta($post->ID, 'songs')) {echo get_post_meta($post->ID, 'songs', true);} ?>چیزی که چاپ کردن این بود : Arrayکد من به گونه ای هست که با هر بار اضافه کردن میشه همون متاباکس و تکرار کنه و پر کنیم . فکر کنم یه خورده فرق کنه با حالت عادی ویرایش شده تیر 93 توسط HamedPC نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 <?php if (get_post_meta($post->ID, 'songs')) {$songs = get_post_meta($post->ID, 'songs', false);$songs[0] = $songs;} ?>و بعد باید نام متا کی هر نوبت را بدونید و داخل [] بگذارید البته این کدهای شما اینکار را نمی کنند و صرفا متا ولوهای متعدد ذخیره می کنند : <?php if (get_post_meta($post->ID, 'songs')) {$songs = get_post_meta($post->ID, 'songs', false);$songs[0] = $songs;for($x=0; $x<10; $x++) {echo $songs[$x]."<br>\n";}} ?> نقل قول لینک به ارسال
HamedPC 1 ارسال شده در تیر 93 مالک گزارش بازنشر ارسال شده در تیر 93 الان نزدیک 1.5 ماهه که من دنبال یه متاباکس هستم به این صورت. حالا یا فریم ورک یا کدنویسی از اول که بتونم یه متاباکس بسازم که به صورت نامحدود بشه باکس اضافه کرد و نه یه باکس . مثلا تو هر سری سه یا به فرض چهار تا باکس اضافه بشه . و تو قالب هم تو حلقه بذاریم کد متاباکس رو نمایش بده .ممنون میشم اگه کسی بلده پاسخ بده . نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 نا محدود که وجود نداره ولی برای اینکه فیلدهای متعدد به یه متاباکس اضافه کنید کافیه یک فیلد هیدن هم به کدهاتون اضافه کنید تا همیشه شماره آخرین فیلد را ذخیره کنه مقدذار اولیه اش را بگذارید صفر و با جی کوئری برای کلید ادتون تعریف کنید مثال فرض می کنیم که کلاس کلید اضافه کردن فیلد addButton باشه آی دی و نام فیلد هیدنتون songs_number و کلاس کل متاباکستون myMetaBox این کد میشه کد جی کوئریتون $(document).ready(function() {$(".addButton").click(function() {var fn = $("#songs_number").val();var newfn = parseInt(fn)+1;var f_name = 'SONGS[song_number-'+newfn+']';var new_input = '<input name="'+f_name+'">';$(new_input).appendTo(".myMetaBox");$("#songs_number").val(newfn);});});و این هم کد احضارتون <?phpif (get_post_meta($post->ID, 'songs')) {$songs_number = get_post_meta($post->ID, 'songs_number', true);if($songs_number>0) { $songs = get_post_meta($post->ID, 'songs', false); $songs[0] = $songs; for($x =0 , $x < $songs_number, ++$x) { $song = 'songs_number-'.$x; if(!empty($songs[$song])) { echo $songs[$song]; } }}else { $songs = get_post_meta($post->ID, 'songs', true); echo $songs;}}?>توضیح مهم: کاری که می خواهید بکنید نیازمند دانش برنامه نویسی نسبی است اگر این دانش را داشته باشید با این راهنمایی کارتون انجام می شه و الا پیشنهاد می کنم که در بخش خرید تایپیک بزنید تا یک برنامه نویس براتون انجام بده چون کوچکترین ایراد کدنویسی ارور بر می گردونه و سر در گمتون می کنه 1 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 در کد یه اشتباه شده $song = 'song_number-'.$x;اشتباها $song = 'songs_number-'.$x; نوشته شده اصلاحش کنید که به مشکل نخورید 1 نقل قول لینک به ارسال
focus8m 0 ارسال شده در اردیبهشت 94 گزارش بازنشر ارسال شده در اردیبهشت 94 ببخشید مقدار اینو چگونه چاپ کنیم؟// Adding the metaboxes// Adding the metaboxesadd_action( 'add_meta_boxes', 'add_employee_meta' );/* Saving the data */add_action( 'save_post', 'employee_meta_save' );/* Adding the main meta box container to the post editor screen */function add_employee_meta() { add_meta_box( 'employee-details', 'Employee Details', 'employee_details_init', 'post');}/*Printing the box content */function employee_details_init() { global $post; // Use nonce for verification wp_nonce_field( plugin_basename( __FILE__ ), 'employee_nonce' ); ?> <div id="employee_meta_item"> <?php //Obtaining the linked employeedetails meta values $employeeDetails = get_post_meta($post->ID,'employeeDetails',true); $c = 0; if ( count( $employeeDetails ) > 0 && is_array($employeeDetails)) { foreach( $employeeDetails as $employeeDetail ) { if ( isset( $employeeDetail['name'] ) || isset( $employeeDetail['bio'] ) ) { printf( '<p>Name<input type="text" name="employeeDetails[%1$s][name]" value="%2$s" /> Package : <textarea name="employeeDetails[%1$s][bio]" rows="4" cols="50" >%3$s</textarea><a href="#" class="remove-package">%4$s</a></p>', $c, $employeeDetail['name'], $employeeDetail['bio'], 'Remove' ); $c = $c +1; } } } ?><span id="output-package"></span><a href="#" class="add_package"><?php _e('Add Employee Details'); ?></a><script> var $ =jQuery.noConflict(); $(document).ready(function() { var count = <?php echo $c; ?>; $(".add_package").click(function() { count = count + 1; $('#output-package').append('<p> Name <input type="text" name="employeeDetails['+count+'][name]" value="" /> bio : <textarea name="employeeDetails['+count+'][bio]" rows="4" cols="50" ></textarea><a href="#" class="remove-package"><?php echo "Remove"; ?></a></p>' ); return false; }); $(document.body).on('click','.remove-package',function() { $(this).parent().remove(); }); }); </script></div><?php}/* Save function for the entered data */function employee_meta_save( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // Verifying the nonce if ( !isset( $_POST['employee_nonce'] ) ) return; if ( !wp_verify_nonce( $_POST['employee_nonce'], plugin_basename( __FILE__ ) ) ) return; // Updating the employeeDetails meta data $employeeDetails = $_POST['employeeDetails']; update_post_meta($post_id,'employeeDetails',$employeeDetails);} نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .