[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fQrPcQuL3opDy5FybY1tC9IqzHKM658CHaI8LVDSKmco":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"tott","Thorsten Ott","https:\u002F\u002Fprofiles.wordpress.org\u002Ftott\u002F",3,80,85,30,84,"2026-05-20T02:19:41.179Z",[14,36,56],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":20,"downloaded":21,"rating":22,"num_ratings":22,"last_updated":23,"tested_up_to":24,"requires_at_least":25,"requires_php":26,"tags":27,"homepage":32,"download_link":33,"security_score":9,"vuln_count":22,"unpatched_count":22,"last_vuln_date":34,"fetched_at":35},"easy-custom-fields","Easy Custom Fields","0.6","\u003Cp>Features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>simply generate post boxes with multiple fields \u002F groups\u003C\u002Fli>\n\u003Cli>easily validate\u002Fsanitize input and output data\u003C\u002Fli>\n\u003Cli>easy access to field data via $easy_cf->field_id->get() or $easy_cf->field_id->get( NULL, $raw=true );\u003C\u002Fli>\n\u003Cli>get error messages for validation failures via admin notices\u003C\u002Fli>\n\u003Cli>custom post type aware\u003C\u002Fli>\n\u003Cli>extendable to your needs by extending Easy_CF_Field and Easy_CF_Validator classes (see advanced usage)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>As this script is mainly meant as basis for developers it needs minor coding skills to add this functionality\u003Cbr \u002F>\nto your theme.\u003C\u002Fp>\n\u003Cp>In order to make use of this class simply initialize it from the functions.php file of your theme as described below.\u003C\u002Fp>\n\u003Ch4>Simple Usage\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>require_once( WP_PLUGIN_DIR . '\u002Feasy-custom-fields\u002Feasy-custom-fields.php' );\n$field_data = array (\n    'testgroup' => array (              \u002F\u002F unique group id\n        'fields' => array(              \u002F\u002F array \"fields\" with field definitions\n            'field1'    => array(),     \u002F\u002F globally unique field id\n            'field2'    => array(),\n            'field3'    => array(),\n        ),\n    ),\n);\n$easy_cf = new Easy_CF($field_data);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Advanced Usage\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>require_once( WP_PLUGIN_DIR . '\u002Feasy-custom-fields\u002Feasy-custom-fields.php' );\n$field_data = array (\n    'testgroup' => array (\n        'fields' => array(\n            'field1'    => array(),\n            'field2'    => array(),\n            'field3'    => array(),\n        ),\n    ),\n    'advanced_testgroup' => array (                                     \u002F\u002F unique group id\n        'fields' => array(                                              \u002F\u002F array \"fields\" with field definitions \n            'advanced_field'    => array(                               \u002F\u002F globally unique field id\n                'label'         => 'Advanced Field Description',        \u002F\u002F Field Label\n                'hint'          => 'Long Advanced Field description',   \u002F\u002F A descriptive hint for the field\n                'type'          => 'textarea',                          \u002F\u002F Custom Field Type (see Ref: field_type)\n                'class'         => 'aclass',                            \u002F\u002F CSS Wrapper class for the field\n                'input_class'   => 'theEditor',                         \u002F\u002F CSS class for the input field\n                'error_msg'     => 'The Advanced Field is wrong' ),     \u002F\u002F Error message to show when validate fails\n                'validate'      => 'validatorname',                     \u002F\u002F Custom Validator (see Ref: validator)\n            'advanced_email' => array(\n                'label' => 'Email',\n                'hint' => 'Enter your email',\n                'validate' => 'email', )\n        ),\n        'title' => 'Product Description',   \u002F\u002F Group Title\n        'context' => 'advanced',            \u002F\u002F context as in https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fadd_meta_box\n        'pages' => array( 'post', 'page' ), \u002F\u002F pages as in https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fadd_meta_box\n    ),\n);\n\nif ( !class_exists( \"Easy_CF_Validator_Email\" ) ) {\n\n    class Easy_CF_Validator_Email extends Easy_CF_Validator {\n        public function get( $value='' ) {\n            return esc_attr( $value );\n        }\n\n        public function set( $value='' ) {\n            $value = esc_attr( trim( stripslashes( $value ) ) );\n            return $value;\n        }\n\n        public function validate( $value='' ) {\n            if ( empty( $value ) || is_email( $value ) ) \n                return true;\n            else\n                return false;\n        }\n    }\n}\n\nif ( !class_exists( \"Easy_CF_Field_Textarea\" ) ) {\n    class Easy_CF_Field_Textarea extends Easy_CF_Field {\n        public function print_form() {\n            $class = ( empty( $this->_field_data['class'] ) ) ? $this->_field_data['id'] . '_class' :  $this->_field_data['class'];\n            $input_class = ( empty( $this->_field_data['input_class'] ) ) ? $this->_field_data['id'] . '_input_class' :  $this->_field_data['input_class'];\n\n            $id = ( empty( $this->_field_data['id'] ) ) ? $this->_field_data['id'] :  $this->_field_data['id'];\n            $label = ( empty( $this->_field_data['label'] ) ) ? $this->_field_data['id'] :  $this->_field_data['label'];\n            $value = $this->get();\n            $hint = ( empty( $this->_field_data['hint'] ) ) ? '' :  '\u003Cp>\u003Cem>' . $this->_field_data['hint'] . '\u003C\u002Fem>\u003C\u002Fp>';\n\n            $label_format =\n                '\u003Cdiv class=\"%s\">'.\n                '\u003Cp>\u003Clabel for=\"%s\">\u003Cstrong>%s\u003C\u002Fstrong>\u003C\u002Flabel>\u003C\u002Fp>'.\n                '\u003Cp>\u003Ctextarea class=\"%s\" style=\"width: 100%%;\" type=\"text\" name=\"%s\">%s\u003C\u002Ftextarea>\u003C\u002Fp>'.\n                '%s'.\n                '\u003C\u002Fdiv>';\n            printf( $label_format, $class, $id, $label, $input_class, $id, $value, $hint );\n        }\n    }\n}\n\n$easy_cf = new Easy_CF($field_data);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Note\u003C\u002Fh4>\n\u003Cp>If you’re not using auto_init then meta boxes need to be added individually using\u003Cbr \u002F>\nadd_meta_box( $group_id, $group_title, array( &$easy_cf, ‘meta_box_cb’ ), $page, $group_context );\u003Cbr \u002F>\nand the save methods need to be initialized after adding all meta boxes using\u003Cbr \u002F>\n$easy_cf->add_save_method();\u003C\u002Fp>\n","This is a set of extendable classes to allow easy handling of custom post fields.",60,9521,0,"2012-07-11T14:45:00.000Z","3.3.2","2.9.2","",[28,29,30,31],"custom-fields","custom-post-fields","post-meta","post_meta","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Feasy-custom-fields\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feasy-custom-fields.zip",null,"2026-04-16T10:56:18.058Z",{"slug":37,"name":38,"version":39,"author":5,"author_profile":6,"description":40,"short_description":41,"active_installs":42,"downloaded":43,"rating":44,"num_ratings":45,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":26,"tags":49,"homepage":53,"download_link":54,"security_score":9,"vuln_count":22,"unpatched_count":22,"last_vuln_date":34,"fetched_at":55},"mention-me","Mention-Me Widget","1.0.5","\u003Cp>Simple widget to extend P2s (and other themes) functionality and display recent @replies for a logged in user in the sidebar.\u003Cbr \u002F>\nIt can be also configured to show direct replies to comments or posts without the @username indication.\u003C\u002Fp>\n","Simple widget to extend P2s (and other themes) functionality and display recent @replies for a logged in user in the sidebar.",10,4499,100,1,"2009-10-31T17:04:00.000Z","2.8.5","2.8",[50,51,52],"p2","replies","widget","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fmention-me\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmention-me.1.0.5.zip","2026-04-06T09:54:40.288Z",{"slug":57,"name":58,"version":59,"author":5,"author_profile":6,"description":60,"short_description":61,"active_installs":42,"downloaded":62,"rating":22,"num_ratings":22,"last_updated":63,"tested_up_to":64,"requires_at_least":65,"requires_php":26,"tags":66,"homepage":71,"download_link":72,"security_score":9,"vuln_count":22,"unpatched_count":22,"last_vuln_date":34,"fetched_at":35},"remote-api","Remote API","0.2","\u003Cp>A basic use case for this plugin would be lazy loading content segments or performing cross-blog actions.\u003Cbr \u002F>\nIt includes a simple example for lazy loading widgets, but is mainly aimed for developers who like to built on top of this functionality.\u003C\u002Fp>\n\u003Cp>Features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Url Format in form of \u003Ccode>http:\u002F\u002F\u003Cblogname>\u002F\u003Cserver_entry_key>\u002F\u003Crequest_string>\u002F\u003Cserver_format_key>\u002F\u003Cformat>\u003C\u002Fcode> in order to allow server side caching of requests without setting up a huge set of rewrite rules. The request string contains all request parameters\u003C\u002Fli>\n\u003Cli>Variable response formats. Comes with xml and json bundled in response.php but can be extended to your needs\u003C\u002Fli>\n\u003Cli>Exceptions with custom exception handler are used throughout the classes to allow error feedback in the requested response format.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Please have a look at the inline documentation starting from \u003Ccode>remote-api.php\u003C\u002Fcode>. To get a sense of the usage have a look at the examples\u003C\u002Fp>\n\u003Ch3>Lazy Loading Widget Example\u003C\u002Fh3>\n\u003Cp>The Lazy Loading Widget example is a basic use case for this script. It’s UI is still not very tuned, but should give an impression on what can be done with this remote-api.\u003C\u002Fp>\n\u003Cp>When you visit your widget administration at \u003Ccode>\u002Fwp-admin\u002Fwidgets.php\u003C\u002Fcode> you’ll notice a widget called “Remote_API_Lazy_Widget”. Drag it to one of your sidebars where you would like to have some asynchronously loaded widget appear and give it a Title. Then reload the widgets.php page.\u003C\u002Fp>\n\u003Cp>A new sidebar should appear in which you can drop other widgets. The widgets you’ll drop in this sidebar will be loaded asynchronously via a ajax request in place of the placeholder widget.\u003C\u002Fp>\n","A set of extendable classes that allow the creation of a remote API.",3810,"2011-02-23T13:01:00.000Z","3.04","3.0",[67,68,69,70,57],"api","lazy-loading","lazy-widget","remote-access","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fremote-api\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fremote-api.zip"]