رفتن به مطلب
estedadrap

خارج کردن یک حلقه از یک تابع

پست های پیشنهاد شده

سلام

خسته نباشید 

من جهت تکمیل کرد بخش آرتیست یک سایت موزیک میخوام در قسمت ارتیست تعداد کل اهنگ های مرتبط با هر ارتیست رو نشون بدم

قالبی که استفاده میکنم این قابلیت رو داره که با ایجاد بخش ارتیست برای هر شخض این کار رو انجام بده اما این قابلیت داخل پست تیپ داخل داشبورد گذاشته شده 

تو عکسی که لینکشو زیر میزارم بهتر متوجه خواهید شد..

AXE

و اما... پیگیر شدم و کدش رو با هزار مکافات که داخل یه فایل فانشن تو یه افزونه اختصاصی قالب جا خوش کرده بود رو پیدا کردم

اما از اونجایی که کدنویسی خیلی پیچیده ای داشت نتونستم به هدفم برسم

کد رو براتون میزارم ..

<?php

/**
 * Post Types
 * 
 * @author Codevz
 * @link http://codevz.com
 */

if ( ! defined( 'ABSPATH' ) ) { die( '-1' ); }

class Codevz_CPT {

	public function __construct() {

		add_action( 'admin_head', array( $this, 'admin_head' ) );

		$this->types = array(
			'artists'	=>	'dashicons-admin-users', 
			'songs'		=>	'dashicons-format-audio',
			'news'		=>	'dashicons-format-audio',
			'playlists'	=>	'dashicons-playlist-audio',
			'podcasts'	=>	'dashicons-microphone',
			'lyrics'	=>	'dashicons-welcome-write-blog', 
			'videos'	=>	'dashicons-video-alt3', 
			'events'	=>	'dashicons-calendar', 
			'gallery'	=>	'dashicons-format-gallery'
		);

		/* Register post types */
		add_action( 'init', array( $this, 'register' ), 0 );

		/* Manage CPT columns action */
		add_action( 'manage_posts_custom_column', array( $this, 'manage_columns' ), 10, 2 );

		/* Manage CPT columns filter */
		foreach ( $this->types as $name => $i ) {
			$columns = array();
			add_filter( "manage_edit-".$name."_columns", function () use ( $columns ) {
				global $typenow;
				$i = array();
				$i['cb']	= 'cb-select-all-1';
				$i['cover']	= __( 'Cover', 'cd' );
				$i['title']	= __( 'Title', 'cd' );

				if ( $typenow !== 'artists' ) {
					$i['cd_artist'] = __( 'Artist', 'cd' );
				}

				if ( $typenow === 'artists' ) {
					$i['cd_items'] = __( 'Items', 'cd' );
					$i['taxonomy-artist'] = __( 'Under', 'cd' );
				}
				if ( $typenow === 'events' ) {
					$i['cd_event_date'] = __( 'Start', 'cd' );
					$i['cd_end_event_date'] = __( 'End', 'cd' );
					$i['cd_venue'] = __( 'Venue', 'cd' );
				}
				if ( $typenow === 'songs' ) {
					$i['cd_plays'] 	= __( 'Plays', 'cd' );
					$i['cd_downloads'] = __( 'Downloads', 'cd' );
				}
				if ( $typenow === 'songs' ) {
					$i['cd_plays'] 	= __( 'Plays', 'cd' );
					$i['cd_downloads'] = __( 'Downloads', 'cd' );
				}
				if ( $typenow === 'videos' ) {
					$i['cd_views'] = __( 'Views', 'cd' );
				}

				$i['cd_likes'] = __( 'Likes', 'cd' );
				$i['cd_dislikes'] = __( 'Dislikes', 'cd' );
				$i['comments'] = __( 'CM', 'cd' );
				$i['author'] = __( 'By', 'cd' );
				if ( $typenow === 'post' ) {
					$i['categories'] = __( 'Categories', 'cd' );
				}
				$i['date'] = __( 'Date', 'cd' );

				$columns = $i;
				return $columns;
			});
		}

		/* Sortable cols */
		$this->sortable = array( 'cd_event_date', 'cd_end_event_date', 'cd_plays', 'cd_likes', 'cd_dislikes', 'cd_downloads', 'cd_views' );

		foreach ( $this->types as $name => $i ) {
			$columns = array();
			add_filter( "manage_edit-".$name."_sortable_columns", function () use ( $columns ) {
				foreach ( $this->sortable as $i ) {
					$columns[$i] = $i;
				}

				return $columns;
			});
		}

		add_action( 'load-edit.php', array( $this, 'sorting_request' ) );

	}

	public function admin_head() {
		echo '<style>
			.vc_license-activation-notice, 
			.eg-update-notice-wrap, 
			.rs-update-notice-wrap {
			    position: absolute;
			    height: 1px !important;
			    left: -10000px !important
			}
			.dashicons-format-audio:before, 
			.dashicons-playlist-audio:before, 
			.dashicons-microphone:before, 
			.dashicons-welcome-write-blog:before, 
			.menu-icon-artists .dashicons-admin-users:before, 
			.dashicons-video-alt3:before, 
			.dashicons-format-gallery:before, 
			.dashicons-calendar:before {
			    color: #2ea2cc !important
			}
			.wp-has-current-submenu .dashicons-format-audio:before, 
			.wp-has-current-submenu .dashicons-playlist-audio:before, 
			.wp-has-current-submenu .dashicons-microphone:before, 
			.wp-has-current-submenu .dashicons-welcome-write-blog:before, 
			.wp-has-current-submenu .dashicons-admin-users:before, 
			.wp-has-current-submenu .dashicons-video-alt3:before, 
			.wp-has-current-submenu .dashicons-format-gallery:before, 
			.wp-has-current-submenu .dashicons-calendar:before {
			    color: #fff !important 
			}
			th#artist, 
			th#cd_plays, 
			th#cd_likes, 
			th#cd_dislikes, 
			th#alphabet, 
			th#cd_downloads, 
			th#cd_views, 
			th#items, 
			th#taxonomy-artist, 
			th#categories, 
			th#venue, 
			th#status {
			    width: 8%
			}  
			th#cd_event_start, 
			th#cd_event_end {
			    width: 10%
			} 
			th#cover { 
			    width: 42px
			} 
			.cover img, 
			.riv_post_thumbs img { 
			    border-radius: 4px;
			    width: 40px;
			    height: 40px
			}
			.cd_ico { 
			    background-image: none !important;
			    background-color: #2A81CC;
			    text-align: center;
			    border-radius: 2px;
			    padding: 5px;
			    width: inherit !important;
			    height: inherit !important;
			}
			.cd_ico:before { color: #fff !important }
			.wpb_element_title .cdz_ico {
			    width: 22px !important;
			    height: 20px !important
			}
			[data-param_type|=posttypes] .edit_form_line, 
			[data-param_type|=checkbox] .edit_form_line { 
			    height: 126px;
			    overflow: auto;
			    border: 1px solid #F3F3F3;
			    padding: 2px 0 0 10px
			}
			[data-param_type|=posttypes] .vc_checkbox-label,
			[data-param_type|=checkbox] .vc_checkbox-label {
			    display: block;
			    margin: 6px 0
			}
		</style>';
	}

	public function register() {
		$this->menu_separator( 26 );
		$options = get_option( '_cs_options' );

		foreach ( $this->types as $slug => $icon ) {

			$opt = isset( $options[ $slug . '_settings' ] ) ? $options[ $slug . '_settings' ] : array();
			$opt = array(
				'slug' 			=> !empty( $opt['slug'] ) ? $opt['slug'] : $slug, 
				'title' 		=> !empty( $opt['title'] ) ? $opt['title'] : ucfirst( $slug ), 
				'alphabet_slug' => !empty( $opt['alphabet_slug'] ) ? $opt['alphabet_slug'] : $slug.'/browse', 
				'alphabet_title'=> !empty( $opt['alphabet_title'] ) ? $opt['alphabet_title'] : 'Alphabet', 
				'cat_slug' 		=> !empty( $opt['cat_slug'] ) ? $opt['cat_slug'] : $slug.'/cat', 
				'cat_title' 	=> !empty( $opt['cat_title'] ) ? $opt['cat_title'] : 'Categories'
			);

			register_taxonomy( $slug.'_cat', $slug, 
				array(
					'hierarchical'		=> true,
					'labels'		=> array(
						'name'			=> $opt['cat_title'],
						'menu_name'		=> $opt['cat_title']
					),
					'show_ui'			=> true,
					'show_admin_column'	=> true,
					'query_var'			=> true,
					'show_in_rest'		=> true,
					'rewrite'			=> array( 'slug' => $opt['cat_slug'], 'with_front' => false ),
				)
			);

			if ( $slug === 'artists' ) {
				register_taxonomy( 'artist', 'artists', 
					array(
						'hierarchical'		=> true,
						'labels'		=> array(
							'name'			=> $opt['alphabet_title'],
							'menu_name'		=> $opt['alphabet_title']
						),
						'show_ui'			=> true,
						'show_admin_column'	=> true,
						'show_in_rest'		=> true,
						'query_var'			=> true,
						'rewrite'			=> array( 'slug' => $opt['alphabet_slug'], 'with_front' => false ),
					)
				);
			}

			register_post_type( $slug, 
				array(
					'labels'		=> array(
						'name'			=> $opt['title'],
						'menu_name'		=> $opt['title']
					),
					'public'			=> true,
					'menu_icon'			=> $icon,
					'supports'			=> array( 'title', 'editor', 'thumbnail', 'custom-fields', 'comments', 'author' ),
					'has_archive'		=> true,
					'show_in_rest'		=> true,
					'rewrite'			=> array( 'slug' => $opt['slug'], 'with_front' => false )
			 	)
			);

			register_taxonomy_for_object_type( 'post_tag', $slug );
		}

		$this->menu_separator( 36 );
	}

	public function sorting_request() {
		add_filter( 'request', array( $this, 'sorting' ) );
	}

	public function sorting( $vars ) {
		foreach ( $this->sortable as $i ) {
			if ( isset( $vars['orderby'] ) && $i === $vars['orderby'] ) {
				if ( $i == 'cd_event_date' || $i === 'cd_end_event_date' ) {
					$vars = array_merge(
						$vars,
						array(
							'meta_query' => array(
								array(
									'key' => $i,
									'value' => date('2030/12/28 10:30'),
									'compare' => '<'
								)
							)
						)
					);
				} else {
					$vars = array_merge(
						$vars,
						array(
							'meta_key' => $i,
							'orderby' => 'meta_value_num'
						)
					);
				}
			}
		}

		return $vars;
	}

	public function manage_columns( $column, $post_id ) {

		$meta = get_post_meta( $post_id, 'cd_meta', true );
		$meta = isset( $meta ) ? $meta : array();
		$out = '';

		switch( $column ) {
			case 'cover' :
				ob_start();
				the_post_thumbnail( 'thumbnail' );
				$out = ob_get_clean();
				break;
			case 'cd_items' :
				$out .= $this->get_artist_items( 'post', $post_id );
				$out .= $this->get_artist_items( 'songs', $post_id );
				$out .= $this->get_artist_items( 'news', $post_id );
				$out .= $this->get_artist_items( 'posts', $post_id );
				$out .= $this->get_artist_items( 'videos', $post_id );
				$out .= $this->get_artist_items( 'podcasts', $post_id );
				$out .= $this->get_artist_items( 'playlists', $post_id );
				$out .= $this->get_artist_items( 'events', $post_id );
				$out .= $this->get_artist_items( 'gallery', $post_id );
				$out .= $this->get_artist_items( 'lyrics', $post_id );
				$out .= $this->get_artist_items( 'posts', $post_id );
				$out .= $this->get_artist_items( 'product', $post_id );
				break;
			case 'cd_event_date' :
				$out .= date_i18n( "j F, Y", strtotime( isset( $meta['event_date'] ) ? $meta['event_date'] : '' ) ) . '<br />';
				$out .= date_i18n( "H:i", strtotime( isset( $meta['event_date'] ) ? $meta['event_date'] : '' ) );
				break;
			case 'cd_end_event_date' :
				$out .= date_i18n( "j F, Y", strtotime( $meta['end_event_date'] ) ) . '<br />';
				$out .= date_i18n( "H:i", strtotime( $meta['end_event_date'] ) );
				break;
			case 'cd_venue' :
				$out = isset( $meta['venue'] ) ? $meta['venue'] : '';
				break;
			case 'cd_artist' :
				$out = $this->get_artists( $post_id );
				break;
			case 'cd_plays' :
				$out = get_post_meta( $post_id, 'cd_plays', true );
				$out = !is_array( $out ) ? $out : '';
				break;
			case 'cd_likes' :
				$out = get_post_meta( $post_id, 'cd_likes', true );
				break;
			case 'cd_dislikes' :
				$out = get_post_meta( $post_id, 'cd_dislikes', true );
				break;
			case 'cd_downloads' :
				$out = get_post_meta( $post_id, 'cd_downloads', true );
				break;
			case 'cd_views' :
				$out = get_post_meta( $post_id, 'cd_views', true );
				break;
		}

		echo $out ? $out : '_';
	}

	public function menu_separator( $p ) {
		global $menu;
		static $id = 0;

		if ( !is_int( $p ) ) {
			$mp = 0;
			foreach( $menu as $mp => $i ) {
				if ( $i[2] === $p ) { break; }
			}
			$p = $mp + 1;
		}
		$menuFile = 'separator-custom-' . $id++;
		$menu[$p] = array( '', 'read', $menuFile, '', 'wp-menu-separator cd_separator' );
		ksort( $menu );
	}

	public function get_artist_items( $cpt, $id ) {
		$query = new WP_Query( array(
			'post_type'     => $cpt,
			'meta_query'    => array(
				array( 'relation' => 'OR' ),
				array(
					'key' 		=> 'cd_meta', 
					'value' 	=> '"' . $id . '"', 
					'compare' 	=> 'LIKE'
				)
			),
			'posts_per_page' => -1
		) );

		return $query->post_count ? '[' . $query->post_count . '] ' . ucwords( $cpt ) . '<br />' : '';
		wp_reset_postdata();
	}

	public function get_artists( $id, $out = '' ) {

		$meta = get_post_meta( $id, 'cd_meta', true );
		$meta = isset( $meta['artist'] ) ? $meta['artist'] : array();
		$artists = array();

		if ( $meta ) {
			foreach( $meta as $i ) {
				if ( get_the_title( $id ) !== get_the_title( $i ) ) {
					$artists[] = '<a href="' . get_post_permalink( $i ) . '">' . get_the_title( $i ) . '</a>';
				}
			}
			$out .= implode( '<br />', $artists );
		}

		return $out;
	}

}

new Codevz_CPT();

و اما میخوام کد رو داخل این حلقه استفاده کنم .. میدونم که برای خیلی از اساتید این یه مسئله خیلی پیش پا افتاده هست 

لطفا بررسی کنید

/* Artists */
				if ( $cpt === 'artists' ) {
					if ( ! empty( $meta['fb'] ) ) {
						echo '<div id="fb-root"></div>
							<script>(function(d, s, id) {
							  var js, fjs = d.getElementsByTagName(s)[0];
							  if (d.getElementById(id)) return;
							  js = d.createElement(s); js.id = id;
							  js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5&appId=376512092550885";
							  fjs.parentNode.insertBefore(js, fjs);
							}(document, \'script\', \'facebook-jssdk\'));</script>';
						echo '<div class="mbt fb-page" data-href="' . $meta['fb'] . '" data-tabs="timeline" data-width="500" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true"></div>';
					}
					if ( isset( $meta['social'] ) ) {
						echo '<div class="clr mb">';
						$codevz->social( $meta['social'] );
						echo '</div>';
					}
						echo '<img class="cd_instagramimge" src="' . esc_url( get_post_meta( get_the_ID(), 'vphoto', true ) ) . '" />';	?>
						<?php echo '<br>';
				} 

 

به اشتراک گذاری این ارسال


لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • مطالب مشابه

    • توسط miladmoqaddam823
      دوستان سلام. 
      چطوری میتونم به انتهای صفحات کتگوری و برچسب ها، متن و توضیحات اضافه کنم؟
      به خیلی از فروشنده های قالب های وردپرس پیام دادم، هیچ کدوم این قابلیت رو ندارن
      حالا الان میخوام با وودمارت کار کنم، اما نتونستم راه حلی پیدا کنم برای این موضوع.
      بعضی قالب ها این امکان رو دارن، اما بالای صفحه نمایش میده، در حالیکه من میخوام انتهای صفحه و زیر محصولات باشه این توضیحات.
    • توسط kamalmajd
      با سلام و عرض ادب
      ارور زیر چه چیزی را بیان میکند و چگونه حل میشود؟
      Notice: Undefined offset: 0 in /home/…/wp-content/plugins/wp-parsidate/includes/fixes- permalinks.php on line
    • توسط hosseiny.mahdi
      از افرادی که به صورت تمام وقت تمایل به همکاری دارند دعوت میشود رزومه کاری خود را به شماره انتهای آگهی واتساپ نمایند تا پس از بررسی و مصاحبه با شرایط مناسب دعوت به همکاری شوند.
      ⁦⚙️⁩ موارد تخصصی مورد نیاز:
      ⚫طراح حرفه ای سایت
      ⚫متخصص وردپرس
      ⚫تسلط به پلاگین های وردپرس
      ⚫مسلط به امنیت وردپرس
      ⚫تسلط به css , html5,php , jQuery , JavaScript
      ⚫تسلط به سئو تکنیکال و محتوا
      ⚫تسلط به سفارشی سازی قالب ها و افزونه ها
      ⚫تسلط به اختصاصی سازی قالب وردپرس بصورت بهینه و استاندارد
      ⚫تسلط به AdWords , webmaster tools , analytics
      ⚫توانایی پیاده سازی سایت از روی طرح های psd
      ⚫تسلط به کنترل پنل های هاستینگ
      ⚫تسلط به طراحی ریسپانسیو
      ⚫تسلط به UI ,UX
      ⚫تسلط به عیب یابی و رفع مشکلات وردپرسی
      ⚫ مسلط به لینک سازی صحیح داخلی و خارجی
       
      ⁦⚙️⁩ موارد شخصیتی مورد نیاز :
      ⚫ تعهد کاری بالا و منظم
      ⚫ متخصص حرفه ای در کار خود
      ⚫ سابقه کار حداقل ۲ سال
      ⚫ نمونه کار قوی و متعدد
      ⚫توانایی تجزیه و تحلیل و حل مسئله
      ⚫ مستعد و خلاق
      ⚫ صفر تا صد مسلط به طراحی سایت
      ⚫ متعهد به زمان‌بندی
      ⚫ انجام وظایف محوله با نهایت دقت و ظرافت
      ⚫پایبند به اصول اخلاقی در تعاملات بین فردی و سازمانی
      ⚫ توانمندی کار تیمی
      ⚫ تمایل به ارتقاء و پیشرفت
      ⁦⚙️⁩ برخی ویژگی‌های مشمول:
      ⚫ حقوق ثابت عالی
      ⚫ ایاب و ذهاب
      ⚫ بیمه تامین اجتماعی
      ⚫ عیدی
      ⚫ پاداش
      ⚫ کارمزد مجزا برای هر پروژه
      ⚫ قابلیت ارتقاء جایگاه
      ⚫ نزدیک مترو
      ⚫از ۹ صبح تا ۱۸ و پنجشنبه ها تا ۱۴
      ⚫استخدام کارآموزان قوی(پس از یک ماه کارآموزی و رضایت)
       
    • توسط Reka
      برای نوشتن یک متن در فایل از تابع fwrite() در زبان PHP استفاده میشود.

      این تابع دو مقدار ورودی دریافت میکند، مقدار ورودی اول یک شی از نوع File handler (هندلر) بوده و مقدار دوم رشته ای (String) که میخواهیم درون فایل نوشته شود را مشخص میکند.
       
      $txt = "This is a test text!"; fwrite($file, $txt); نوشتن درون فایل با تابع fwrite

      میتوانیم تابع fwrite() را روی یک فایل باز شده چندین بار صدا بزنیم و در ادامه اطلاعات نوشته شده قبلی، اطلاعات دیگری بنویسیم. برای مثال قطعه کد زیر یک متن را در دو خط پشت سر هم درون فایل مینویسد.
      $txt = "This is a test text!"; fwrite($file, txt); fwrite($file, "\n"); fwrite($file, $txt); $txt = "This is a test text!"; fwrite($file, txt); fwrite($file, "\n"); fwrite($file, $txt); در پایان کار با فایل، می بایست فایل باز شده را ببندیم و مشخص کنیم که دیگر با این فایل کاری نداریم. در صورتی که عملیات بستن فایل انجام نشود، تغییرات انجام شده روی فایل اعمال نخواهد شد.

      برای بستن فایل باز شده از تابع fclose() استفاده میکنیم که به عنوان تنها ورودی، متغیر مربوط به File Handler را ورودی میگیرد.
      fclose($file); اکنون فایل options.ini ما محتوایی مشابه زیر خواهد داشت.
      This is a test text! This is a test text!  
    • توسط Reka
      معرفی توابع مهم و کاربردی زیر مجموعه تابع ( ) date :

      در لیست زیر برخی از توابع مهم و کاربردی مرتبط با تابع date را معرفی کرده ایم . این توابع امکانات مهم و سودمندی برای کار با زمان در اختیار ما قرار می دهند.

      1 - checkdate ( ) : این تابع ، تاریخ داده شده به آن را طبق تقویم میلادی بررسی کرده و صحت آن را اعلام می کند .

      2 - date_default_timezone_get ( ) : این تابع زمان محلی ( timezone ) سرور را نمایش می دهد .

      3 - date_default_timezone_set ( ) : این تابع زمان محلی ( timezone ) سرور را بر طبق مقدار داده شده ، تنظیم می کند .

      4 - getdate ( ) : این تابع زمان و تاریخ دقیق جاری سرور را در یک آرایه به کاربر نمایش می دهد .

      پی اچ پی در مورد تبدیل یک رشته به یک تاریخ، کاملا هوشمندانه عمل می کند، بنابراین شما می توانید مقادیر مختلفی مانند زیر را نیز به تابع strtotime بدهید:  
      <?php $d=strtotime("tomorrow"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("next Saturday"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("+3 Months"); echo date("Y-m-d h:i:sa", $d) . "<br>"; ?> خروجی:
      2018-07-24 12:00:00am 2018-07-28 12:00:00am 2018-10-23 06:25:33am  
       
×
×
  • اضافه کردن...