رفتن به مطلب

سوال | متغییرها در فانکشنز


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

سلام

خداروشکر با حضور دوباره اساتید این انجمن دوباره جون گرفت و اساتید ( @lord_viper و @Parsa و بقیه دوستان )پاسخ میدن...

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

حالا میخوام در head سایتم meta ویدیو رو بذارم و نیاز دارم مقدار src در کد زیر رو تحویل بگیرم ولی نمیده...

چطوری میتونم وقتی در نوشته src مقدار گرفت من مقدارش رو در head چاپ کنم؟ هر جوری اکو کردم نشد...

اگر نشدنی هست ، چطوری میتونم مقدار src رو با هک دیگه ای چاپ کنم؟ 

function html5_video($atts, $content = null) {

        extract(shortcode_atts(array(

                "width" => '',

                "height" => '',

                "poster" => '',

                "src" => ''
        ), $atts));
       
              $output = '<video id="my-video" class="video-js vjs-big-play-centered" controls preload="auto" width="'.$width.'" height="'.$height.'" poster="'.$poster.'" data-setup="{}">
                <source src="'.$src.'" type="video/mp4">
                <p class="vjs-no-js">
                  اخطار! مرورگر شما قدیمی است یا جاوااسکریپت در مرورگر شما بسته است ، فعال کنید
                  <a href="http://videojs.com/html5-video-support/" target="_blank">پشتیبانی VIDEO JS</a>
    </p></video>';
                       return $output;

}

add_shortcode('video5', 'html5_video');

 

لینک به ارسال

سلام. این لینک رو بررسی کنید:

http://stackoverflow.com/questions/6290810/return-only-the-shortcode-from-post

پاسخ دومی که داده شده به نظر بهتره.

ولی این کار مثل دوباره کاری هست. به نظرم بهتره از متاباکس استفاده کنید برای ویدئوها. چون با این روش اگر چند ویدئو توی صفحه باشه همیشه اولی رو احتمالا انتخاب میکنه و ویرایشش در اینده هم یکمی سخت میشه براتون.

موفق باشید.

لینک به ارسال
در 10 دقیقه قبل، فرحان گفته است :

سلام. این لینک رو بررسی کنید:

http://stackoverflow.com/questions/6290810/return-only-the-shortcode-from-post

پاسخ دومی که داده شده به نظر بهتره.

ولی این کار مثل دوباره کاری هست. به نظرم بهتره از متاباکس استفاده کنید برای ویدئوها. چون با این روش اگر چند ویدئو توی صفحه باشه همیشه اولی رو احتمالا انتخاب میکنه و ویرایشش در اینده هم یکمی سخت میشه براتون.

موفق باشید.

ممنون

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

لینک به ارسال
در 1 ساعت قبل، nazanin123 گفته است :

ممنون

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

 

خوب ایده یکی هست یعنی راهی ندارید جز اینکه با regex شورت کد رو از توی متن مطلب قبل از ارسال شدنش به خروجی تشخیص بدید و استخراج کنید. حالا توی اون لینک خواسته جایگزین کنه شما جایگزین نکنید، فقط استخراج کنید.

مگر اینکه کلا روشتونو عوض کنید.

امیدوارم متوجه منظورم شده باشید.

موفق باشید.

لینک به ارسال
ارسال شده در (ویرایش شده)
در 2 ساعت قبل، فرحان گفته است :

 

خوب ایده یکی هست یعنی راهی ندارید جز اینکه با regex شورت کد رو از توی متن مطلب قبل از ارسال شدنش به خروجی تشخیص بدید و استخراج کنید. حالا توی اون لینک خواسته جایگزین کنه شما جایگزین نکنید، فقط استخراج کنید.

مگر اینکه کلا روشتونو عوض کنید.

امیدوارم متوجه منظورم شده باشید.

موفق باشید.

بله ، متوجه منظور شما شدم ولی این تابع تعریف شده و باید خروجی بده ، توو کدهای بالا من ی جایی اشتباه کردم که نمیتونم ازش توو جاهای دیگه خروجی بگیرم ...

سایت خبری هست و به اندازه کافی مصرف منابع بالا هست ، regex هم فشار رو بالاتر میبره... 

 

ویرایش شده توسط nazanin123
لینک به ارسال
در 12 ساعت قبل، nazanin123 گفته است :

بله ، متوجه منظور شما شدم ولی این تابع تعریف شده و باید خروجی بده ، توو کدهای بالا من ی جایی اشتباه کردم که نمیتونم ازش توو جاهای دیگه خروجی بگیرم ...

سایت خبری هست و به اندازه کافی مصرف منابع بالا هست ، regex هم فشار رو بالاتر میبره... 

 

 

متوجه نمیشم منظورتون از اینکه می خواید این تابع رو جای دیگه استفاده کنید چی هست اما در کل، وقتی وردپرس میخواد شورت کد شما رو پردازش کنه از قسمت پردازش هدر سایت گذشته. در نتیجه توی هدر سایت باید خودتون مستقیم متن مطلب رو فیلتر کنید و سورس رو بردارید. حتی اگر هم سورس رو برای جای دیگه ای مثلا توی فوتر می خواستید، باز هم کار درستی نیست که بیاید مثلا حین پردازش این تابع سورس رو جایی ذخیره کنید که در آینده استفاده کنید.

خود وردپرس هم برای پردازش شورت کدها از regex استفاده میکنه.

راهی که من به نظرم میرسه برای حل مشکل لود سایت اینه که با هوک به زمان ذخیره شدن مطلب سورس ها رو از ویدئوهای موجود توی صفحه یا اونی که مد نظرتونه استخراج کنید و توی یک متا ذخیره کنید. و توی هدر سایت هم میتونید اون متا رو استفاده کنید.
 

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

هر روشی رو رفتید لطفا اینجا هم اطلاع بدید.

موفق باشید.

لینک به ارسال

سلام

با JQuery خیلی راحت می تونید این کار رو انجام بدید. روی لود صفحه مقدار src رو بگیرید و داخل یه option ذخیره کنید. مقدار option رو هم داخل src تابع بزارید.

دقیقا چیزی که می خواید خروجی میده. برای ذخیره مقدار داخل option هم می تونید دیتا رو post کنید

لینک به ارسال

با سلام شما یا باید از جی کوئری استفاده کنید مثل کد زیر

<script type="text/javascript"> 
     $(document).ready(function() {
         $("head").append("<meta name=viewport content=width=400, initial-scale=0.45, minimum-    scale=0.45/><link rel=apple-touch-icon href=/images/customIcon.png/><meta name=apple-mobile-web-app-capable content=no /><meta name=apple-mobile-web-app-status-bar-style content=black-translucent /><link rel=apple-touch-icon-precomposed href=/images/customIcon.png/> ");
    });
</script>

یا مثل وردپرس شورت کدها رو پیدا کنید و در هدر سایت جاگذاری کنید

 

 

function _get_shortcodes() {

global $post;
	if( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'video5') ) {
        $pattern = get_shortcode_regex();
        preg_match_all('/'.$pattern.'/uis', $post->post_content, $matches);
    
        for ( $i=0; $i < count($matches); $i++ ) {
    
            if ( isset( $matches[0][$i] ) and $matches[0][$i] == 'video5' ) {
                $attribureStr = str_replace (" ", "&", trim ($matches[1][$i]));
                $attribureStr = str_replace ('"', '', $attribureStr);
                $attributes   = wp_parse_args ($attribureStr, $defaults);
            }
        }
    }
}
add_action('wp_head','_get_shortcodes');

این کد بدون تست نوشته شده برای نمایش روال کار

لینک به ارسال
در در 12/24/2016 at 11:23، lord_viper گفته است :

با سلام شما یا باید از جی کوئری استفاده کنید مثل کد زیر


<script type="text/javascript"> 
     $(document).ready(function() {
         $("head").append("<meta name=viewport content=width=400, initial-scale=0.45, minimum-    scale=0.45/><link rel=apple-touch-icon href=/images/customIcon.png/><meta name=apple-mobile-web-app-capable content=no /><meta name=apple-mobile-web-app-status-bar-style content=black-translucent /><link rel=apple-touch-icon-precomposed href=/images/customIcon.png/> ");
    });
</script>

یا مثل وردپرس شورت کدها رو پیدا کنید و در هدر سایت جاگذاری کنید

 

 


function _get_shortcodes() {

global $post;
	if( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'video5') ) {
        $pattern = get_shortcode_regex();
        preg_match_all('/'.$pattern.'/uis', $post->post_content, $matches);
    
        for ( $i=0; $i < count($matches); $i++ ) {
    
            if ( isset( $matches[0][$i] ) and $matches[0][$i] == 'video5' ) {
                $attribureStr = str_replace (" ", "&", trim ($matches[1][$i]));
                $attribureStr = str_replace ('"', '', $attribureStr);
                $attributes   = wp_parse_args ($attribureStr, $defaults);
            }
        }
    }
}
add_action('wp_head','_get_shortcodes');

این کد بدون تست نوشته شده برای نمایش روال کار

سپاس فراوان، عاااالی ... با زمینه دلخواه از src خودش گرفتم ... از کد شما استفاده کردم

 

لینک به ارسال

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

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

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

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

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

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

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

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

×
×
  • اضافه کردن...