本文整理汇总了PHP中SucomUtil::preg_grep_keys方法的典型用法代码示例。如果您正苦于以下问题:PHP SucomUtil::preg_grep_keys方法的具体用法?PHP SucomUtil::preg_grep_keys怎么用?PHP SucomUtil::preg_grep_keys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SucomUtil
的用法示例。
在下文中一共展示了SucomUtil::preg_grep_keys方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: filter_check_head_meta_options
public function filter_check_head_meta_options($check_opts, $post_id)
{
foreach (SucomUtil::preg_grep_keys('/^meta_name_twitter:/', $check_opts) as $key => $val) {
unset($check_opts[$key]);
}
return $check_opts;
}
示例2: filter_sharing_preset_rows
public function filter_sharing_preset_rows($rows, $form)
{
$presets = array();
foreach (SucomUtil::preg_grep_keys('/^buttons_preset_/', $this->p->options, false, '') as $key => $val) {
$presets[$key] = ucwords(preg_replace('/_/', ' ', $key));
}
asort($presets);
$rows[] = '<td colspan="2" align="center">' . $this->p->msgs->get('pro-feature-msg', array('lca' => 'ngfb')) . '</td>';
foreach ($presets as $filter_id => $filter_name) {
$rows[] = $this->p->util->th($filter_name . ' Preset', null, 'sharing_preset') . '<td class="blank">' . $form->get_hidden('buttons_preset_' . $filter_id) . $this->p->options['buttons_preset_' . $filter_id] . '</td>';
}
return $rows;
}
示例3: add_header
public function add_header()
{
// add various function test results top-most in the debug log
// hook into ngfb_is_functions to extend the default array of function names
if ($this->p->debug->is_on()) {
$is_functions = array('is_author', 'is_archive', 'is_category', 'is_tag', 'is_tax', 'is_home', 'is_search', 'is_singular', 'is_attachment', 'is_product', 'is_product_category', 'is_product_tag');
$is_functions = apply_filters($this->p->cf['lca'] . '_is_functions', $is_functions);
foreach ($is_functions as $function) {
if (function_exists($function) && $function()) {
$this->p->debug->log($function . '() = true');
}
}
}
if ($this->p->is_avail['metatags']) {
echo $this->get_header_html();
} else {
echo "\n<!-- " . $this->p->cf['lca'] . " meta tags are disabled -->\n";
}
// include additional information when debug mode is on
if ($this->p->debug->is_on()) {
$defined_constants = get_defined_constants(true);
$defined_constants['user']['NGFB_NONCE'] = '********';
$this->p->debug->show_html(SucomUtil::preg_grep_keys('/^NGFB_/', $defined_constants['user']), 'ngfb constants');
$opts = $this->p->options;
foreach ($opts as $key => $val) {
switch (true) {
case strpos($key, 'buttons_css_') !== false:
case strpos($key, 'buttons_js_') !== false:
case preg_match('/_key$/', $key):
case $key === 'plugin_tid':
$opts[$key] = '********';
}
}
$this->p->debug->show_html(print_r($this->p->is_avail, true), 'available features');
$this->p->debug->show_html(print_r($this->p->check->get_active(), true), 'active plugins');
$this->p->debug->show_html(null, 'debug log');
$this->p->debug->show_html($opts, 'ngfb settings');
if (($obj = $this->p->util->get_post_object()) !== false) {
$post_id = empty($obj->ID) ? 0 : $obj->ID;
if (!empty($post_id) && isset($this->p->addons['util']['postmeta'])) {
$post_opts = $this->p->addons['util']['postmeta']->get_options($post_id);
$this->p->debug->show_html($post_opts, 'ngfb post_id ' . $post_id . ' custom settings');
}
}
}
}
示例4: add_header
public function add_header()
{
$lca = $this->p->cf['lca'];
if ($this->p->debug->enabled) {
$this->p->util->log_is_functions();
}
if ($this->p->is_avail['metatags']) {
echo $this->get_header_html(apply_filters($lca . '_header_use_post', false));
} else {
echo "\n<!-- " . $lca . " meta tags disabled -->\n";
}
// include additional information when debug mode is on
if ($this->p->debug->enabled) {
// show debug log
$this->p->debug->show_html(null, 'debug log');
// show constants
$defined_constants = get_defined_constants(true);
$defined_constants['user']['NGFB_NONCE'] = '********';
if (is_multisite()) {
$this->p->debug->show_html(SucomUtil::preg_grep_keys('/^(MULTISITE|^SUBDOMAIN_INSTALL|.*_SITE)$/', $defined_constants['user']), 'multisite constants');
}
$this->p->debug->show_html(SucomUtil::preg_grep_keys('/^NGFB_/', $defined_constants['user']), 'ngfb constants');
// show active plugins
$this->p->debug->show_html(print_r(NgfbUtil::active_plugins(), true), 'active plugins');
// show available modules
$this->p->debug->show_html(print_r($this->p->is_avail, true), 'available features');
// show all plugin options
$opts = $this->p->options;
foreach ($opts as $key => $val) {
switch (true) {
case strpos($key, '_html') !== false:
case strpos($key, '_css_') !== false:
case strpos($key, '_js_') !== false:
case preg_match('/_(key|tid)$/', $key):
$opts[$key] = '********';
}
}
$this->p->debug->show_html($opts, 'ngfb settings');
}
// end of debug information
}
示例5: check_post_header
public function check_post_header($post_id = true, &$obj = false)
{
if (empty($this->p->options['plugin_check_head'])) {
return $post_id;
}
if (!is_object($obj) && ($obj = $this->p->util->get_post_object($post_id)) === false) {
return $post_id;
}
// only check publicly available posts
if (!isset($obj->post_status) || $obj->post_status !== 'publish') {
return $post_id;
}
// only check registered front-end post types (to avoid menu items, product variations, etc.)
$ptns = $this->p->util->get_post_types('names');
if (empty($obj->post_type) || !in_array($obj->post_type, $ptns)) {
return $post_id;
}
$charset = get_bloginfo('charset');
$permalink = get_permalink($post_id);
$permalink_html = wp_encode_emoji(htmlentities(urldecode($permalink), ENT_QUOTES, $charset, false));
// double_encode = false
$permalink_no_meta = add_query_arg(array('NGFB_META_TAGS_DISABLE' => 1), $permalink);
$check_opts = apply_filters($this->p->cf['lca'] . '_check_head_meta_options', SucomUtil::preg_grep_keys('/^add_/', $this->p->options, false, ''), $post_id);
if (current_user_can('manage_options')) {
$notice_suffix = ' (' . sprintf(__('see <a href="%s">Theme Integration</a> settings', 'nextgen-facebook'), $this->p->util->get_admin_url('advanced#sucom-tabset_plugin-tab_integration')) . ')...';
} else {
$notice_suffix = '...';
}
$this->p->notice->inf(sprintf(__('Checking %1$s webpage header for duplicate meta tags', 'nextgen-facebook'), '<a href="' . $permalink . '">' . $permalink_html . '</a>') . $notice_suffix, true);
// use the permalink and have get_head_meta() remove our own meta tags
// to avoid issues with caching plugins that ignore query arguments
if (($metas = $this->p->util->get_head_meta($permalink, '/html/head/link|/html/head/meta', true)) !== false) {
foreach (array('link' => array('rel'), 'meta' => array('name', 'itemprop', 'property')) as $tag => $types) {
if (isset($metas[$tag])) {
foreach ($metas[$tag] as $m) {
foreach ($types as $t) {
if (isset($m[$t]) && $m[$t] !== 'generator' && !empty($check_opts[$tag . '_' . $t . '_' . $m[$t]])) {
$this->p->notice->err('Possible conflict detected — your theme or another plugin is adding a <code>' . $tag . ' ' . $t . '="' . $m[$t] . '"</code> HTML tag to the head section of this webpage.', true);
}
}
}
}
}
}
return $post_id;
}
示例6: check_post_header
public function check_post_header($post_id = true, &$obj = false)
{
if (empty($this->p->options['plugin_check_head'])) {
return $post_id;
}
if (!is_object($obj) && ($obj = $this->p->util->get_post_object($post_id)) === false) {
return $post_id;
}
// only check published posts, so we have a permalink to check
if (!isset($obj->post_status) || $obj->post_status !== 'publish') {
return $post_id;
}
// only check registered front-end post types (to avoid menu items, product variations, etc.)
$post_types = $this->p->util->get_post_types('frontend', 'names');
if (empty($obj->post_type) || !in_array($obj->post_type, $post_types)) {
return $post_id;
}
$permalink = get_permalink($post_id);
$permalink_no_meta = add_query_arg(array('NGFB_META_TAGS_DISABLE' => 1), $permalink);
$check_opts = apply_filters($this->p->cf['lca'] . '_check_head_meta_options', SucomUtil::preg_grep_keys('/^add_/', $this->p->options, false, ''), $post_id);
// use the permalink and have get_head_meta() remove our own meta tags
// to avoid issues with caching plugins that ignore query arguments
if (($metas = $this->p->util->get_head_meta($permalink, '/html/head/link|/html/head/meta', true)) !== false) {
foreach (array('link' => array('rel'), 'meta' => array('name', 'itemprop', 'property')) as $tag => $types) {
if (isset($metas[$tag])) {
foreach ($metas[$tag] as $m) {
foreach ($types as $t) {
if (isset($m[$t]) && $m[$t] !== 'generator' && !empty($check_opts[$tag . '_' . $t . '_' . $m[$t]])) {
$this->p->notice->err('Possible conflict detected - your theme or another plugin is adding a <code>' . $tag . ' ' . $t . '="' . $m[$t] . '"</code> HTML tag to the head section of this webpage.', true);
}
}
}
}
}
}
return $post_id;
}
示例7: filter_save_post_options
public function filter_save_post_options($opts, $post_id, $rel_id, $mod)
{
$def_opts = $this->filter_get_md_defaults(array(), $mod);
// only get the schema options
foreach (SucomUtil::preg_grep_keys('/^schema_recipe_((prep|cook|total)_(days|hours|mins|secs)|calories)$/', $opts) as $key => $value) {
$opts[$key] = (int) $value;
if ($opts[$key] === $def_opts[$key]) {
unset($opts[$key]);
}
}
// renumber recipe ingredients
$recipe_ingredients = array();
foreach (SucomUtil::preg_grep_keys('/^schema_recipe_ingredient_[0-9]+$/', $opts) as $key => $value) {
unset($opts[$key]);
if (!empty($value)) {
$recipe_ingredients[] = $value;
}
}
foreach ($recipe_ingredients as $num => $value) {
$opts['schema_recipe_ingredient_' . $num] = $value;
}
if (empty($opts['schema_review_rating'])) {
foreach (array('schema_review_rating', 'schema_review_rating_from', 'schema_review_rating_to') as $key) {
unset($opts[$key]);
}
} else {
foreach (array('schema_review_rating_from', 'schema_review_rating_to') as $key) {
if (empty($opts[$key]) && isset($def_opts[$key])) {
$opts[$key] = $def_opts[$key];
}
}
}
return $opts;
}
示例8: get_js
public function get_js($pos = 'header', $ids = array())
{
if (($obj = $this->p->util->get_post_object()) === false) {
$this->p->debug->log('exiting early: invalid object type');
return;
}
// determine which (if any) sharing buttons are enabled
// loop through the sharing button option prefixes (fb, gp, etc.)
if (empty($ids)) {
if (!is_admin() && is_singular() && $this->is_disabled()) {
$this->p->debug->log('exiting early: buttons disabled');
return;
} elseif (is_admin() && (empty($obj->filter) || $obj->filter !== 'edit')) {
$this->p->debug->log('exiting early: admin non-editing page');
return;
}
if (class_exists('NgfbWidgetSharing')) {
$widget = new NgfbWidgetSharing();
$widget_settings = $widget->get_settings();
} else {
$widget_settings = array();
}
foreach ($this->p->cf['opt']['pre'] as $id => $pre) {
// check for enabled buttons on settings page
if (is_admin() && !empty($obj)) {
foreach (SucomUtil::preg_grep_keys('/^' . $pre . '_on_admin_/', $this->p->options) as $key => $val) {
if (!empty($val)) {
$ids[] = $id;
}
}
} else {
if (is_singular() || !is_singular() && !empty($this->p->options['buttons_on_index']) || is_front_page() && !empty($this->p->options['buttons_on_front'])) {
// exclude buttons enabled for admin editing pages
foreach (SucomUtil::preg_grep_keys('/^' . $pre . '_on_/', $this->p->options) as $key => $val) {
if (strpos($key, $pre . '_on_admin_') === false && !empty($val)) {
$ids[] = $id;
}
}
}
// check for enabled buttons in ACTIVE widget(s)
foreach ($widget_settings as $num => $instance) {
if (is_object($widget) && is_active_widget(false, $widget->id_base . '-' . $num, $widget->id_base)) {
if (array_key_exists($id, $instance) && (int) $instance[$id]) {
$ids[] = $id;
}
}
}
}
}
if (empty($ids)) {
$this->p->debug->log('exiting early: no buttons enabled');
return;
}
}
natsort($ids);
$ids = array_unique($ids);
$js = '<!-- ' . $this->p->cf['lca'] . ' ' . $pos . ' javascript begin -->';
if (strpos($pos, '-header')) {
$js_loc = 'header';
} elseif (strpos($pos, '-footer')) {
$js_loc = 'footer';
} else {
$js_loc = $pos;
}
if (!empty($ids)) {
foreach ($ids as $id) {
$id = preg_replace('/[^a-z]/', '', $id);
$opt_name = $this->p->cf['opt']['pre'][$id] . '_js_loc';
if (method_exists($this->website[$id], 'get_js') && !empty($this->p->options[$opt_name]) && $this->p->options[$opt_name] == $js_loc) {
$js .= $this->website[$id]->get_js($pos);
}
}
}
$js .= '<!-- ' . $this->p->cf['lca'] . ' ' . $pos . ' javascript end -->' . "\n";
return $js;
}
示例9: add_media_data
public static function add_media_data(&$json_data, $mod, $mt_og, $size_name = false)
{
$wpsso =& Wpsso::get_instance();
/*
* Property:
* image as https://schema.org/ImageObject
*/
$og_image = array();
$prev_count = 0;
$max = $wpsso->util->get_max_nums($mod, 'schema');
if (empty($size_name)) {
$size_name = $wpsso->cf['lca'] . '-schema';
}
// include any video preview images first
if (!empty($mt_og['og:video']) && is_array($mt_og['og:video'])) {
// prevent duplicates - exclude text/html videos
foreach ($mt_og['og:video'] as $num => $og_video) {
if (isset($og_video['og:video:type']) && $og_video['og:video:type'] !== 'text/html') {
if (SucomUtil::get_mt_media_url($og_video, 'og:image')) {
$prev_count++;
}
$og_image[] = SucomUtil::preg_grep_keys('/^og:image/', $og_video);
}
}
if ($prev_count > 0) {
$max['schema_img_max'] -= $prev_count;
if ($wpsso->debug->enabled) {
$wpsso->debug->log($prev_count . ' video preview images found (og_img_max adjusted to ' . $max['schema_img_max'] . ')');
}
}
}
$og_image = array_merge($og_image, $wpsso->og->get_all_images($max['schema_img_max'], $size_name, $mod, true, 'schema'));
if (!empty($og_image)) {
$images_added = WpssoSchema::add_image_list_data($json_data['image'], $og_image, 'og:image');
} else {
$images_added = 0;
}
if (!$images_added && $mod['is_post']) {
$og_image = $wpsso->media->get_default_image(1, $size_name, true);
$images_added = WpssoSchema::add_image_list_data($json_data['image'], $og_image, 'og:image');
}
if (!$images_added) {
unset($json_data['image']);
}
// prevent null assignment
/*
* Property:
* video as https://schema.org/VideoObject
*/
if (!empty($mt_og['og:video'])) {
WpssoJsonSchema::add_video_list_data($json_data['video'], $mt_og['og:video'], 'og:video');
}
}
示例10: get_array
public function get_array($use_post = false, $obj = false, &$og = array())
{
if ($this->p->debug->enabled) {
$this->p->debug->mark();
}
if (!is_object($obj)) {
$obj = $this->p->util->get_post_object($use_post);
}
$post_id = empty($obj->ID) || empty($obj->post_type) || !is_singular() && $use_post === false ? 0 : $obj->ID;
$og_max = $this->p->util->get_max_nums($post_id, 'post');
// post_id 0 returns the plugin settings
$tc = SucomUtil::preg_grep_keys('/^twitter:/', $og);
// read any pre-defined twitter card values
$tc = apply_filters($this->p->cf['lca'] . '_tc_seed', $tc, $use_post, $obj);
// the twitter:domain is used in place of the 'view on web' text
if (!isset($tc['twitter:domain']) && !empty($og['og:url'])) {
$tc['twitter:domain'] = preg_replace('/^.*\\/\\/([^\\/]+).*$/', '$1', $og['og:url']);
}
if (!isset($tc['twitter:site']) && !empty($this->p->options['tc_site'])) {
$tc['twitter:site'] = $this->p->options['tc_site'];
}
if (!isset($tc['twitter:title'])) {
$tc['twitter:title'] = $this->p->webpage->get_title(70, '...', $use_post, true, false, true, 'og_title');
}
if (!isset($tc['twitter:description'])) {
$tc['twitter:description'] = $this->p->webpage->get_description($this->p->options['tc_desc_len'], '...', $use_post, true, true, true, 'tc_desc');
}
if (!isset($tc['twitter:creator'])) {
if (SucomUtil::is_post_page($use_post)) {
if (!empty($obj->post_author)) {
$tc['twitter:creator'] = get_the_author_meta($this->p->options['plugin_cm_twitter_name'], $obj->post_author);
} elseif (!empty($this->p->options['og_def_author_id'])) {
$tc['twitter:creator'] = get_the_author_meta($this->p->options['plugin_cm_twitter_name'], $this->p->options['og_def_author_id']);
}
} elseif (SucomUtil::is_author_page()) {
$author_id = $this->p->util->get_author_object('id');
$tc['twitter:creator'] = get_the_author_meta($this->p->options['plugin_cm_twitter_name'], $author_id);
} elseif ($this->p->util->force_default_author($use_post)) {
$tc['twitter:creator'] = get_the_author_meta($this->p->options['plugin_cm_twitter_name'], $this->p->options['og_def_author_id']);
}
}
/*
* Player Card
*/
// player card relies on existing og meta tags - a valid post_id is not required
if (!isset($tc['twitter:card'])) {
if ($this->p->debug->enabled) {
$this->p->debug->log('player card: checking for videos');
}
if (isset($og['og:video']) && count($og['og:video']) > 0) {
foreach ($og['og:video'] as $video) {
if (!empty($video['og:video:embed_url'])) {
$tc['twitter:card'] = 'player';
$tc['twitter:player'] = $video['og:video:embed_url'];
if (!empty($video['og:image'])) {
$tc['twitter:image'] = $video['og:image'];
}
if (!empty($video['og:video:width'])) {
$tc['twitter:player:width'] = $video['og:video:width'];
}
if (!empty($video['og:video:height'])) {
$tc['twitter:player:height'] = $video['og:video:height'];
}
break;
// only list the first video
}
}
}
}
/*
* All Image Cards
*/
if (empty($og_max['og_img_max'])) {
if ($this->p->debug->enabled) {
$this->p->debug->log('images disabled: maximum images = 0');
}
} else {
/*
* Default Image for Indexes
*/
if (!isset($tc['twitter:card']) && !$use_post) {
if ($this->p->util->force_default_image()) {
if ($this->p->debug->enabled) {
$this->p->debug->log('large image card: checking for default image');
}
$og_image = $this->p->media->get_default_image(1, $this->p->cf['lca'] . '-tc-lrgimg');
if (count($og_image) > 0) {
$image = reset($og_image);
$tc['twitter:card'] = 'summary_large_image';
$tc['twitter:image'] = $image['og:image'];
}
$post_id = 0;
// skip additional image checks
}
}
if (empty($post_id)) {
if ($this->p->debug->enabled) {
$this->p->debug->log('no post_id: image related cards skipped');
}
} else {
//.........这里部分代码省略.........
示例11: get_array
//.........这里部分代码省略.........
if (isset($og['og:type']) && $og['og:type'] == 'article') {
// meta tag not defined or value is null
if (!isset($og['article:author'])) {
if (SucomUtil::is_post_page($use_post)) {
if (!empty($obj->post_author)) {
$og['article:author'] = $this->p->mods['util']['user']->get_author_profile_url($obj->post_author);
} elseif (!empty($this->p->options['og_def_author_id'])) {
$og['article:author'] = $this->p->mods['util']['user']->get_author_profile_url($this->p->options['og_def_author_id']);
}
}
}
// meta tag not defined or value is null
if (!isset($og['article:publisher'])) {
$og['article:publisher'] = $this->p->options['fb_publisher_url'];
}
// meta tag not defined or value is null
if (!isset($og['article:tag'])) {
$og['article:tag'] = $this->p->webpage->get_tags($post_id);
}
// meta tag not defined or value is null
if (!isset($og['article:section'])) {
$og['article:section'] = $this->p->webpage->get_section($post_id);
}
// meta tag not defined or value is null
if (!isset($og['article:published_time'])) {
$og['article:published_time'] = trim(get_post_time('c', null, $post_id));
}
// meta tag not defined or value is null
if (!isset($og['article:modified_time'])) {
$og['article:modified_time'] = trim(get_post_modified_time('c', null, $post_id));
}
}
// get all videos
// call before getting all images to find / use preview images
if (!isset($og['og:video'])) {
if (empty($og_max['og_vid_max'])) {
if ($this->p->debug->enabled) {
$this->p->debug->log('videos disabled: maximum videos = 0');
}
} else {
$og['og:video'] = $this->get_all_videos($og_max['og_vid_max'], $post_id, 'post', false, 'og');
if (!empty($og['og:video']) && is_array($og['og:video'])) {
foreach ($og['og:video'] as $val) {
if (!empty($val['og:image'])) {
$video_previews++;
}
}
if ($video_previews > 0) {
$og_max['og_img_max'] -= $video_previews;
if ($this->p->debug->enabled) {
$this->p->debug->log($video_previews . ' video preview images found (og_img_max adjusted to ' . $og_max['og_img_max'] . ')');
}
}
}
}
}
// get all images
if (!isset($og['og:image'])) {
if (empty($og_max['og_img_max'])) {
if ($this->p->debug->enabled) {
$this->p->debug->log('images disabled: maximum images = 0');
}
} else {
$crawler_name = SucomUtil::crawler_name();
if (!SucomUtil::get_const('NGFB_RICH_PIN_DISABLE')) {
if (is_admin()) {
$img_sizes = array('rp' => $this->p->cf['lca'] . '-richpin', 'og' => $this->p->cf['lca'] . '-opengraph');
} elseif ($crawler_name === 'pinterest') {
$img_sizes = array('og' => $this->p->cf['lca'] . '-richpin');
}
} else {
$img_sizes = array('og' => $this->p->cf['lca'] . '-opengraph');
}
$size_count = count($img_sizes);
$size_num = 0;
foreach ($img_sizes as $md_pre => $size_name) {
$check_dupes = ++$size_num < $size_count ? false : true;
if ($this->p->debug->enabled) {
$this->p->debug->log('getting all images for ' . $md_pre . ' (' . $size_name . ')');
}
$og[$md_pre . ':image'] = $this->get_all_images($og_max['og_img_max'], $size_name, $post_id, $check_dupes, $md_pre);
switch ($md_pre) {
case 'rp':
foreach ($og[$md_pre . ':image'] as $num => $arr) {
$og[$md_pre . ':image'][$num] = SucomUtil::preg_grep_keys('/^og:/', $arr, false, 'pinterest:');
}
break;
case 'og':
// if there's no image, and no video preview image,
// then add the default image for singular webpages
if (empty($og[$md_pre . ':image']) && $video_previews === 0 && SucomUtil::is_post_page($use_post)) {
$og[$md_pre . ':image'] = $this->p->media->get_default_image($og_max['og_img_max'], $size_name, $check_dupes);
}
break;
}
}
}
}
return apply_filters($this->p->cf['lca'] . '_og', $og, $use_post, $obj);
}