فرشاد گوهری 1681 ارسال شده در تیر 98 گزارش بازنشر ارسال شده در تیر 98 (ویرایش شده) سلام دوستان عزیز، وقتتون بخیر من قصد دارم یک هوک برای یکی از توابع موجود در یکی از پلاگینهام بنویسم، اما نمیدونم دقیقا چطور باید این کار رو انجام بدم، این کد تابع موجود در پلاگین هست: function wp_ulike_get_posts_microdata(){ global $post; $get_ulike_count = get_post_meta( $post->ID, '_liked', true ); // Check data output if( !is_singular() || !wp_ulike_get_setting( 'wp_ulike_posts', 'google_rich_snippets') || $get_ulike_count == 0 ) { return; } // Post meta structure $post_meta = '<meta itemprop="name" content="' . the_title_attribute( 'echo=0' ) . '" />'; $post_meta .= apply_filters( 'wp_ulike_extra_structured_data', NULL ); $post_meta .= '<span itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="name" content="' . esc_attr( get_the_author() ) . '" /></span>'; $post_meta .= '<meta itemprop="datePublished" content="' . esc_attr( get_post_time('c') ) . '" />'; // Rating meta structure $ratings_meta = '<span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">'; $ratings_meta .= '<meta itemprop="bestRating" content="5" />'; $ratings_meta .= '<meta itemprop="worstRating" content="1" />'; $ratings_meta .= '<meta itemprop="ratingValue" content="'. wp_ulike_get_rating_value( $post->ID ) .'" />'; $ratings_meta .= '<meta itemprop="ratingCount" content="' . $get_ulike_count . '" />'; $ratings_meta .= '</span>'; // Return value $itemtype = apply_filters( 'wp_ulike_remove_microdata_post_meta', false ); return apply_filters( 'wp_ulike_generate_google_structured_data', ( $itemtype ? $ratings_meta : ( $post_meta . $ratings_meta ) ) ); } add_filter( 'wp_ulike_posts_microdata', 'wp_ulike_get_posts_microdata'); قسمتی از تابع داره خروجی رو کنترل میکنه و یک استرینگ رو برای strucrucherd date گوگل ایجاد میکنه (و داخل متغیر $ratings_meta قرارش میده) داخل تابع دوتا متغیر زیر هست: wp_ulike_get_rating_value( $post->ID ) $get_ulike_count حالا من چطور باید یک هوک بنویسم که مقدار این دو متغیر رو بگیره و یه تغییراتی روشون بده و بعد مجددا برشون گردونه به تابع اصلی؟ پیشاپیش از کمکتون سپاسگزارم. ویرایش شده تیر 98 توسط فرشاد گوهری نقل قول لینک به ارسال
فرشاد گوهری 1681 ارسال شده در تیر 98 مالک گزارش بازنشر ارسال شده در تیر 98 دوستان عزیز، کسی اطلاعی نداره باید چجوری بنویسم این هوک رو؟ نقل قول لینک به ارسال
sajad 731 ارسال شده در تیر 98 گزارش بازنشر ارسال شده در تیر 98 در 1 ساعت قبل، فرشاد گوهری گفته است : دوستان عزیز، کسی اطلاعی نداره باید چجوری بنویسم این هوک رو؟ سلام من فکر میکنم برای اینکه بتونید کنترلی روی این مقادیر داشته باشید باید هوک فیلتر رو براشون به این شکل استفاده کنید: function wp_ulike_get_posts_microdata(){ global $post; $get_ulike_count = get_post_meta( $post->ID, '_liked', true ); $get_ulike_count = apply_filters( 'w_change_ulike_count', $get_ulike_count, $post->ID ); // Check data output if( !is_singular() || !wp_ulike_get_setting( 'wp_ulike_posts', 'google_rich_snippets') || $get_ulike_count == 0 ) { return; } // Post meta structure $post_meta = '<meta itemprop="name" content="' . the_title_attribute( 'echo=0' ) . '" />'; $post_meta .= apply_filters( 'wp_ulike_extra_structured_data', NULL ); $post_meta .= '<span itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="name" content="' . esc_attr( get_the_author() ) . '" /></span>'; $post_meta .= '<meta itemprop="datePublished" content="' . esc_attr( get_post_time('c') ) . '" />'; // Rating meta structure $ratings_meta = '<span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">'; $ratings_meta .= '<meta itemprop="bestRating" content="5" />'; $ratings_meta .= '<meta itemprop="worstRating" content="1" />'; $ratings_meta .= '<meta itemprop="ratingValue" content="'. apply_filters( 'w_change_ratingvalue' ,wp_ulike_get_rating_value( $post->ID ), $post->ID ) .'" />'; $ratings_meta .= '<meta itemprop="ratingCount" content="' . $get_ulike_count . '" />'; $ratings_meta .= '</span>'; // Return value $itemtype = apply_filters( 'wp_ulike_remove_microdata_post_meta', false ); return apply_filters( 'wp_ulike_generate_google_structured_data', ( $itemtype ? $ratings_meta : ( $post_meta . $ratings_meta ) ) ); } add_filter( 'wp_ulike_posts_microdata', 'wp_ulike_get_posts_microdata'); 1 نقل قول لینک به ارسال
فرشاد گوهری 1681 ارسال شده در تیر 98 مالک گزارش بازنشر ارسال شده در تیر 98 در ۱ ساعت قبل، sajad گفته است : سلام من فکر میکنم برای اینکه بتونید کنترلی روی این مقادیر داشته باشید باید هوک فیلتر رو براشون به این شکل استفاده کنید: متشکرم از پاسختون سجاد عزیز، فکر میکنم منظورم رو در سوال اشتباه رسوندم. اون کدی که گذاشتم، تابعیه که داخل خود پلاگین بای دیفالت تعریف شده و من ننوشتمش. به توسعهی دهنده افزونه که پیام دادم، بهم گفتن تابع wp_ulike_get_posts_microdata رو در افزونه سرچ کنید اونجا یک هوک مشخص شده با نام wp_ulike_generate_google_structured_data که میتونید بر اون اساس ساختار این قسمت رو بر اساس نظر خو.دتون تغییر بدید. ولی متاسفانه نتونستم کدش رو پیادهسازی کنم. نقل قول لینک به ارسال
sajad 731 ارسال شده در تیر 98 گزارش بازنشر ارسال شده در تیر 98 در 27 دقیقه قبل، فرشاد گوهری گفته است : متشکرم از پاسختون سجاد عزیز، فکر میکنم منظورم رو در سوال اشتباه رسوندم. اون کدی که گذاشتم، تابعیه که داخل خود پلاگین بای دیفالت تعریف شده و من ننوشتمش. به توسعهی دهنده افزونه که پیام دادم، بهم گفتن تابع wp_ulike_get_posts_microdata رو در افزونه سرچ کنید اونجا یک هوک مشخص شده با نام wp_ulike_generate_google_structured_data که میتونید بر اون اساس ساختار این قسمت رو بر اساس نظر خو.دتون تغییر بدید. ولی متاسفانه نتونستم کدش رو پیادهسازی کنم. خواهش میکنم. من فکر کردم که کد این بخش توسط خودتون نوشته شده و الان برای این که کاربردی تر باشه قصد دارید هوک برای پلاگین تعریف کنید. خب برای اینکه بتونید خروجی رو کنترل کنید همونطور که سازنده پلاگین بهتون گفته میشه خروجی رو توسط هوک فیلتری که تو تابع تعریف کردن کنترل و ساختار مورد نظر رو بفرستید برای خروجی. برای این منظور میتونید به عنوان مثال به این شکل هوک رو بنویسید: add_filter( 'wp_ulike_generate_google_structured_data', function(){ return "Hi"; }); خروجی که این هوک داره اینه که الان میاد و تمام post_meta , ratings_meta رو حذف میکنه و فقط یه Hi میفرسته تو خروجی. اینجا شما میتونید post_meta , ratings_meta خودتون رو بنویسید و در نهایت return کنید. 1 نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 98 گزارش بازنشر ارسال شده در تیر 98 در تکمیل صحبتهای @sajad کد شما یه فیلتر داره تو خط اخرش به صورت زیر return apply_filters( 'wp_ulike_generate_google_structured_data', ( $itemtype ? $ratings_meta : ( $post_meta . $ratings_meta ) ) ); کد هوک شما به صورت زیر میشه function ulike_google_structured_data($meta_data){ //your code here return $meta_data; } add_filter('wp_ulike_generate_google_structured_data','ulike_google_structured_data'); مقدار خروجی تابع wp_ulike_get_posts_microdata رو تو متغییر $meta_data تابع دریافت میکنید و تغییرات مورد نیاز رو روش اعمال میکنید و بعد return میکنید 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .