Commit f8b585ab authored by Simonas's avatar Simonas

in progress

parent a64c82da

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

# Biuro websites
## Information
- Task in [Jira](https://biurobaltic.atlassian.net/browse/LIV-1802)
- Project repository [dev.biuro](http://git.biuro.lt/biuro/dev.biuro)
- Created from [wordpress-nginx-docker](https://github.com/mjstealey/wordpress-nginx-docker)
- SSL Certificates are created with [SSL For Free](https://www.sslforfree.com/?domains=biuro.lt%20www.biuro.lt%20dev.biuro.lt%20staging.biuro.lt%20biuro.lv%20www.biuro.lv%20dev.biuro.lv%20staging.biuro.lv%20biuro.ee%20www.biuro.ee%20dev.biuro.ee%20staging.biuro.ee)
## Installation
- Install [Docker Desktop](https://www.docker.com/products/docker-desktop) on your machine
- Creating new User on my machine helped me with sharing C drive problem (https://tomssl.com/2018/01/11/sharing-your-c-drive-with-docker-for-windows-when-using-azure-active-directory-azuread-aad/)
- Clone [dev.biuro](http://git.biuro.lt/biuro/dev.biuro) repository
- in Command Prompt run `docker-compose up -d`
- `docker ps` command should output existing docker containers (nginx, mysql, wordpress)
- set dev.biuro.lt, dev.biuro.lv, dev.biuro.ee to 127.0.0.1 in hosts
- check if dev.biuro.lt, dev.biuro.lv, dev.biuro.ee works
### DB backup
- `C:\web\dev.biuro> docker exec -i dev-biuro-mysql mysqldump -udev_user -pY6V6bFkD6@GyD!wTShgFmWz! --default-character-set=utf8 dev_biuro > docker/mariadb/data-002.sql`
### DB restore
- `C:\web\dev.biuro> docker exec -i dev-biuro-mysql mysql -udev_user -pY6V6bFkD6@GyD!wTShgFmWz! --default-character-set=utf8 dev_biuro < docker/mariadb/data-001.sql`
## Development
- `C:\web\dev.biuro\ npm install`
## Wordpress
- Regions created using [Wordpress Network](https://codex.wordpress.org/Create_A_Network)
### User
- biuro
- laikinas2587
- info@biuro.eu
### Plugins
#### Akismet Anti-Spam
#### Cookies warning
#### Data controller
#### Jobs importer
#### Permalink Manager Lite
#### Pods - Custom Content Types and Fields
#### Polylang
#### Yoast SEO
### SEO
- [Biuro SEO auditas](https://docs.google.com/document/d/1FiwVoiLvGGmi9V-HPBgJ3gsh3wGswt27csgvfdTU24w/edit?usp=sharing)
- [Biuro raktinių žodžių analizė](https://docs.google.com/spreadsheets/d/1ggnqKuGxFFkLgI6NDZq4PXpRY_whdHX0kjZj7pCP_fk/edit?ts=5b5eaa62#gid=0)
- [Biuro.lt SEO issues](https://docs.google.com/spreadsheets/d/1dXP0dh_v2sFajrcwR2_9HONMadCdZQW4Y2dVXvhxG3E/edit?ts=5b5eaa6b#gid=748245000)
p.s. might not be shared with everyone
### UX goals
- [Biuro goals framework](https://docs.google.com/spreadsheets/d/1NYUE9lFjfnB8k6rtW8MA0UBolK_rxLHrJ8MkfWJ5b0o/edit?ts=5b459b0e#gid=1585165681)
## Documentation
### Social links
in Admin sidebar: SEO -> Social -> Accounts tab
## Known issues (Windows 10)
### Error
ERROR: for mysql Cannot start service mysql: error while creating mount source path '/host_mnt/c/web/dev.biuro/var/mariadb': mkdir /host_mnt/c: file exists
### Solution
Restart docker (sometimes PC restart may be required)
## Other (Commands)
- docker-compose up -d
- docker-compose start
- docker-compose stop
- docker-compose rm -fv
- docker ps
- docker update --restart=no mysql
- docker update --restart=no nginx
- docker update --restart=no wordpress
- docker system prune --all
- docker stop mysql
- docker stop nginx
- docker stop wordpress
- docker restart mysql
- docker restart nginx
- docker restart wordpress
- docker push simoncereska/ourdemo
- docker pull simoncereska/ourdemo:0.0.0
- sudo docker login --username=simoncereska --password=rlgjsPeOuF2T6VgW8fGss81h
- sudo docker-compose up -d
- sudo docker restart staging-biuro-nginx
- curl docker
- docker run -d -p 80:80 release:0.0.0
- docker run -d -p 80:80 -p 443:443 release:0.0.0
- docker run -d -p 80:80 simoncereska/ourdemo:0.0.1
- docker run -it simoncereska/ourdemo
- docker build -t release:0.0.0 .
- docker images
- docker rmi 568c4670fa80
- docker save ourdemo > ourdemo.tar
- docker load --input ourdemo.tar
- docker build -t simoncereska/biuro-staging:0.0.2 .
- docker login --username=simoncereska --password=rlgjsPeOuF2T6VgW8fGss81h
- docker push simoncereska/biuro-staging:0.0.2
### DB preview
- `docker exec -it mysql bash`
- `mysql -uroot -pIiIjnsLi2wR9i1kWVbVpUAzP --default-character-set=utf8`
- `use wordpress;`
- `show tables;`
- `use information_schema;`
- `select * from SCHEMATA;`
### READ list
- https://ansi.23-5.eu/2017/06/wordpress-docker-nginx/
- https://ropenscilabs.github.io/r-docker-tutorial/04-Dockerhub.html
- https://www.katacoda.com/courses/docker/
- https://hub.docker.com/r/chriszarate/wordpress/
- https://dev.to/netcell/wordpress-development-with-docker-2jk9
This diff is collapsed.
This diff is collapsed.
<?php
/**
* Additional hooks for "Permalink Manager Pro"
*/
class Permalink_Manager_Gutenberg extends Permalink_Manager_Class {
public function __construct() {
add_action('enqueue_block_editor_assets', array($this, 'init'));
}
public function init() {
// add_action('enqueue_block_editor_assets', array($this, 'pm_gutenberg_scripts'));
add_meta_box('permalink-manager', __('Permalink Manager', 'permalink-manager'), array($this, 'meta_box'), 'post', 'side', 'high' );
}
public function pm_gutenberg_scripts() {
wp_enqueue_script( 'permalink-manager-gutenberg', PERMALINK_MANAGER_URL . '/out/permalink-manager-gutenberg.js', array( 'wp-blocks', 'wp-element', 'wp-components', 'wp-i18n', ), PERMALINK_MANAGER_VERSION, true );
}
public function meta_box($post) {
global $permalink_manager_uris;
if(empty($post->ID)) {
return '';
}
// Display URI Editor
echo Permalink_Manager_Admin_Functions::display_uri_box($post, true);
}
}
?>
<?php
/**
* Display the page where the slugs could be regenerated or replaced
*/
class Permalink_Manager_Debug extends Permalink_Manager_Class {
public function __construct() {
add_filter( 'permalink-manager-sections', array($this, 'add_debug_section'), 1 );
}
public function add_debug_section($admin_sections) {
$admin_sections['debug'] = array(
'name' => __('Debug', 'permalink-manager'),
'function' => array('class' => 'Permalink_Manager_Debug', 'method' => 'output')
);
return $admin_sections;
}
public function output() {
global $permalink_manager_options, $permalink_manager_uris, $permalink_manager_permastructs, $permalink_manager_redirects, $wp_filter;
$sections_and_fields = apply_filters('permalink-manager-debug-fields', array(
'debug-data' => array(
'section_name' => __('Debug data', 'permalink-manager'),
'fields' => array(
'uris' => array(
'type' => 'textarea',
'description' => __('List of the URIs generated by this plugin.', 'permalink-manager'),
'label' => __('Array with URIs', 'permalink-manager'),
'input_class' => 'short-textarea widefat',
'value' => ($permalink_manager_uris) ? print_r($permalink_manager_uris, true) : ''
),
'custom-redirects' => array(
'type' => 'textarea',
'description' => __('List of custom redirects set-up by this plugin.', 'permalink-manager'),
'label' => __('Array with redirects', 'permalink-manager'),
'input_class' => 'short-textarea widefat',
'value' => ($permalink_manager_redirects) ? print_r($permalink_manager_redirects, true) : ''
),
'permastructs' => array(
'type' => 'textarea',
'description' => __('List of the permastructures.', 'permalink-manager'),
'label' => __('Array with permastructures', 'permalink-manager'),
'input_class' => 'short-textarea widefat',
'value' => ($permalink_manager_permastructs) ? print_r($permalink_manager_permastructs, true) : ''
),
'settings' => array(
'type' => 'textarea',
'description' => __('Currently used plugin settings.', 'permalink-manager'),
'label' => __('Array with settings used in this plugin.', 'permalink-manager'),
'input_class' => 'short-textarea widefat',
'value' => print_r($permalink_manager_options, true)
)
)
)
));
// Now get the HTML output
$output = '';
foreach($sections_and_fields as $section_id => $section) {
$output .= (isset($section['section_name'])) ? "<h3>{$section['section_name']}</h3>" : "";
$output .= (isset($section['description'])) ? "<p class=\"description\">{$section['description']}</p>" : "";
$output .= "<table class=\"form-table fixed-table\">";
// Loop through all fields assigned to this section
foreach($section['fields'] as $field_id => $field) {
$field_name = "{$section_id}[$field_id]";
$field['container'] = 'row';
$output .= Permalink_Manager_Admin_Functions::generate_option_field($field_name, $field);
}
// End the section
$output .= "</table>";
}
return $output;
}
}
<?php
/**
* Display the page where the slugs could be regenerated or replaced
*/
class Permalink_Manager_Permastructs extends Permalink_Manager_Class {
public function __construct() {
add_filter( 'permalink-manager-sections', array($this, 'add_admin_section'), 1 );
}
public function add_admin_section($admin_sections) {
$admin_sections['permastructs'] = array(
'name' => __('Permastructures', 'permalink-manager'),
'function' => array('class' => 'Permalink_Manager_Permastructs', 'method' => 'output')
);
return $admin_sections;
}
public function get_fields() {
global $permalink_manager_permastructs;
$all_post_types = Permalink_Manager_Helper_Functions::get_post_types_array('full');
$woocommerce_icon = "<i class=\"woocommerce-icon woocommerce-cart\"></i>";
// 1. Get notes
$post_types_notes = wpautop(sprintf(__('All allowed <a href="%s" target="_blank">structure tags</a> are listed below.', 'permalink-manager'), "https://codex.wordpress.org/Using_Permalinks#Structure_Tags"));
$post_types_notes .= Permalink_Manager_Helper_Functions::get_all_structure_tags();
$post_types_notes .= wpautop(sprintf(__('Please note that some of them can be used only for particular post types permastructures.', 'permalink-manager'), "https://codex.wordpress.org/Using_Permalinks#Structure_Tags"));
$post_types_notes .= __('<h5>Custom fields inside permastructures <small>(Permalink Manager Pro only)</small></h5>', 'permalink-manager');
$post_types_notes .= wpautop(__('To use the custom fields inside the permalink, please use following tag <code>%__custom_field_key%</code> and replace "<em>custom_field_key</em>" with the full name of your custom field key.', 'permalink-manager'));
// 2. Get fields
$fields = array(
'post_types' => array(
'section_name' => __('Post types', 'permalink-manager'),
'container' => 'row',
'append_content' => $post_types_notes,
'fields' => array()
),
'taxonomies' => array(
'section_name' => __('Taxonomies', 'permalink-manager'),
'container' => 'row',
'append_content' => Permalink_Manager_Admin_Functions::pro_text(),
'fields' => array()
)
);
// 2. Woocommerce support
if(class_exists('WooCommerce')) {
$fields['woocommerce'] = array(
'section_name' => "{$woocommerce_icon} " . __('WooCommerce', 'permalink-manager'),
'container' => 'row',
'append_content' => Permalink_Manager_Admin_Functions::pro_text(),
'fields' => array()
);
}
// 3. Append fields for all post types
foreach($all_post_types as $post_type) {
$default_permastruct = trim(Permalink_Manager_Helper_Functions::get_default_permastruct($post_type['name']), "/");
$current_permastruct = isset($permalink_manager_permastructs['post_types'][$post_type['name']]) ? $permalink_manager_permastructs['post_types'][$post_type['name']] : $default_permastruct;
$fields["post_types"]["fields"][$post_type['name']] = array(
'label' => $post_type['label'],
'container' => 'row',
'input_class' => 'permastruct-field',
'after_description' => self::restore_default_row($default_permastruct),
'extra_atts' => "data-default=\"{$default_permastruct}\"",
'value' => $current_permastruct,
'placeholder' => $default_permastruct,
'type' => 'permastruct'
);
}
return apply_filters('permalink-manager-permastructs-fields', $fields);
}
/**
* Restore default permastructure row
*/
public static function restore_default_row($default_permastruct) {
return sprintf(
"<p class=\"default-permastruct-row columns-container\"><span class=\"column-2_4\"><strong>%s:</strong> %s</span><span class=\"column-2_4\"><a href=\"#\" class=\"restore-default\"><span class=\"dashicons dashicons-image-rotate\"></span> %s</a></span></p>",
__("Default permastructure", "permalink-manager"), esc_html($default_permastruct),
__("Restore to Default Permastructure", "permalink-manager")
);
}
/**
* Get the array with settings and render the HTML output
*/
public function output() {
global $permalink_manager_permastructs;
$sidebar = '<h3>' . __('Important notices', 'permalink-manager') . '</h3>';
$sidebar .= wpautop(__('This tool <strong>automatically appends the slug to the end of permastructure</strong>, so there is no need to use them within the fields. To prevent the overlapping URLs problem please keep the permastructures unique.', 'permalink-manager'));
$sidebar .= sprintf(wpautop(__('The current permastructures settings will be applied <strong>only to the new posts & terms</strong>. To apply the <strong>new permastructures to old posts & terms</strong>, please use "Regenerate/reset" tool available <a href="%s">here</a>.', 'permalink-manager')), admin_url('tools.php?page=permalink-manager&section=tools&subsection=regenerate_slugs'));
return Permalink_Manager_Admin_Functions::get_the_form(self::get_fields(), '', array('text' => __( 'Save permastructures', 'permalink-manager' ), 'class' => 'primary margin-top'), $sidebar, array('action' => 'permalink-manager', 'name' => 'permalink_manager_permastructs'));
}
}
<?php
/**
* Display the settings page
*/
class Permalink_Manager_Settings extends Permalink_Manager_Class {
public function __construct() {
add_filter( 'permalink-manager-sections', array($this, 'add_admin_section'), 1 );
}
public function add_admin_section($admin_sections) {
$admin_sections['settings'] = array(
'name' => __('Settings', 'permalink-manager'),
'function' => array('class' => 'Permalink_Manager_Settings', 'method' => 'output')
);
return $admin_sections;
}
/**
* Get the array with settings and render the HTML output
*/
public function output() {
// Get all registered post types array & statuses
$all_post_statuses_array = get_post_statuses();
$all_post_types = Permalink_Manager_Helper_Functions::get_post_types_array(null, null, true);
$all_taxonomies = Permalink_Manager_Helper_Functions::get_taxonomies_array(false, false, false, true);
$content_types = (defined('PERMALINK_MANAGER_PRO')) ? array('post_types' => $all_post_types, 'taxonomies' => $all_taxonomies) : array('post_types' => $all_post_types);
$sections_and_fields = apply_filters('permalink-manager-settings-fields', array(
'general' => array(
'section_name' => __('General settings', 'permalink-manager'),
'container' => 'row',
'name' => 'general',
'fields' => array(
'auto_update_uris' => array(
'type' => 'single_checkbox',
'label' => __('Auto-update permalinks', 'permalink-manager'),
'input_class' => '',
'description' => __('If enabled, the custom permalinks will be automatically updated every time the post is saved or updated.', 'permalink-manager')
),
'show_native_slug_field' => array(
'type' => 'single_checkbox',
'label' => __('Show "Native slug" field', 'permalink-manager'),
'input_class' => '',
'description' => __('If enabled, it would be possible to edit the native slug via URI Editor on single post/term edit page.', 'permalink-manager')
)
)
),
'seo' => array(
'section_name' => __('SEO functions', 'permalink-manager'),
'container' => 'row',
'name' => 'general',
'fields' => array(
'canonical_redirect' => array(
'type' => 'single_checkbox',
'label' => __('Canonical redirect', 'permalink-manager'),
'input_class' => '',
'description' => __('This function allows Wordpress to correct the URLs used by the visitors.', 'permalink-manager')
),
'setup_redirects' => array(
'type' => 'single_checkbox',
'label' => __('Auto-create "Extra Redirects" for old permalinks', 'permalink-manager'),
'input_class' => '',
'pro' => true,
'disabled' => true,
'description' => __('If enabled, the redirects will be automatially created for old custom permalinks, after posts or terms are updated.', 'permalink-manager')
),
'redirect' => array(
'type' => 'select',
'label' => __('Redirect', 'permalink-manager'),
'input_class' => 'settings-select',
'choices' => array(0 => __('Disable', 'permalink-manager'), "301" => __('Enable "301 redirect"', 'permalink-manager'), "302" => __('Enable "302 redirect"', 'permalink-manager')),
'description' => __('If enabled - the visitors will be redirected from native permalinks to your custom permalinks.<br /><strong>Only native permalinks & extra redirects will be redirected to new custom permalinks</strong>.', 'permalink-manager')
),
'trailing_slashes' => array(
'type' => 'select',
'label' => __('Trailing slashes', 'permalink-manager'),
'input_class' => 'settings-select',
'choices' => array(0 => __('Use default settings', 'permalink-manager'), 1 => __('Add trailing slashes', 'permalink-manager'), 10 => __('Add trailing slashes (+ auto-redirect links without them)', 'permalink-manager'), 2 => __('Remove trailing slashes', 'permalink-manager'), 20 => __('Remove trailing slashes (+ auto-redirect links with them)', 'permalink-manager'),),
'description' => __('This option can be used to alter the native settings and control if trailing slash should be added or removed from the end of posts & terms permalinks.', 'permalink-manager')
),
'pagination_redirect' => array(
'type' => 'single_checkbox',
'label' => __('Force 404 on non-existing pagination pages', 'permalink-manager'),
'input_class' => '',
'description' => __('If enabled, the non-existing pagination pages (for single posts) will return 404 ("Not Found") error.<br /><strong>Please disable it, if you encounter any problems with pagination pages or use custom pagination system.</strong>', 'permalink-manager')
),
)
),
'advanced' => array(
'section_name' => __('Advanced settings', 'permalink-manager'),
'container' => 'row',
'name' => 'general',
'fields' => array(
'auto_remove_duplicates' => array(
'type' => 'single_checkbox',
'label' => __('Automatically remove broken URIs', 'permalink-manager'),
'input_class' => '',
'description' => sprintf(__('If enabled, the custom URIs assigned to removed posts & terms will be automatically removed.<br />To manually remove the duplicates please go <a href="%s">to this page</a>.', 'permalink-manager'), admin_url('tools.php?page=permalink-manager&section=tools&subsection=duplicates'))
),
'fix_language_mismatch' => array(
'type' => 'single_checkbox',
'label' => __('Fix language mismatch', 'permalink-manager'),
'input_class' => '',
'description' => __('If enabled, the plugin will load the adjacent translation of post when the custom permalink is detected, but the language code in the URL does not match the language code assigned to the post/term.', 'permalink-manager')
),
'pmxi_import_support' => array(
'type' => 'single_checkbox',
'label' => __('Disable support for WP All Import', 'permalink-manager'),
'input_class' => '',
'description' => __('If checked, the custom URIs will not be assigned to the posts imported by Wp All Import Pro plugin.', 'permalink-manager')
),
'force_custom_slugs' => array(
'type' => 'select',
'label' => __('Force custom slugs', 'permalink-manager'),
'input_class' => 'settings-select',
'choices' => array(0 => __('No, use native slugs', 'permalink-manager'), 1 => __('Yes, use post/term titles', 'permalink-manager'), 2 => __('Yes, use post/term titles + do not strip special characters: .|-+', 'permalink-manager')),
'description' => __('If enabled, the slugs in the default custom permalinks will be recreated from the post titles.<br />This may cause permalinks duplicates when the post or term title is used more than once.', 'permalink-manager')
),
'partial_disable' => array(
'type' => 'checkbox',
'label' => __('Disable Permalink Manager functionalities', 'permalink-manager'),
'choices' => $content_types,
'description' => __('Select the post types & taxonomies where the functionalities of Permalink Manager should be completely disabled.', 'permalink-manager')
),
)
)
));
$output = Permalink_Manager_Admin_Functions::get_the_form($sections_and_fields, '', array('text' => __( 'Save settings', 'permalink-manager' ), 'class' => 'primary margin-top'), '', array('action' => 'permalink-manager', 'name' => 'permalink_manager_options'));
return $output;
}
}
<?php
/**
* Display the page where the slugs could be regenerated or replaced
*/
class Permalink_Manager_Upgrade extends Permalink_Manager_Class {
public function __construct() {
if(!defined('PERMALINK_MANAGER_PRO')) {
add_filter( 'permalink-manager-sections', array($this, 'add_upgrade_section'), 1 );
}
}
public function add_upgrade_section($admin_sections) {
$admin_sections['upgrade'] = array(
'name' => __('Extra features', 'permalink-manager'),
'function' => array('class' => 'Permalink_Manager_Upgrade', 'method' => 'output')
);
return $admin_sections;
}
public function output() {
$output = sprintf("<h3>%s</h3>", __("Permalink Manager Pro extra features", "permalink-manager"));
$output .= sprintf("<p class=\"lead\">%s</p>", __('Take full control of your permalinks! Permalink Manager Pro contains a bunch of useful extra functionalities!', 'permalink-manager'));
$output .= sprintf("<p class=\"\">%s</p>", __('Not certain if Permalink Manager Pro will fix your permalink problem?<br />Contact us at <a href="mailto:contact@permalinkmanager.pro">contact@permalinkmanager.pro</a>!', 'permalink-manager'));
$output .= "<div class=\"columns-container\">";
$output .= "<div class=\"column-1_3\">";
$output .= sprintf("<h5>%s</h5>", __("Full Taxonomy Support", "permalink-manager"));
$output .= wpautop(__("With Permalink Manager Pro you can easily alter the default taxonomies’ permastructures & edit the full permalink in all the categories, tags and custom taxonomies terms!", "permalink-manager"));
$output .= wpautop(__("You can also bulk edit the taxonomies permalinks (eg. reset the native terms slugs) with included tools - “Find & replace” or “Regnerate/reset”", "permalink-manager"));
$output .= "</div>";
$output .= "<div class=\"column-1_3\">";
$output .= sprintf("<h5>%s</h5>", __("Full WooCommerce Support", "permalink-manager"));
$output .= wpautop(__("Adjust your shop, product category, tags or single product permalinks and set your e-commerce URLs any way you want!", "permalink-manager"));
$output .= wpautop(__("Remove <em>product-category</em>, <em>product-tag</em> and <em>product</em> or replace them with another permalink tags. Furthermore, the plugin allows to set completely custom permalinks for each product &#038; product taxonomies individually.", "permalink-manager"));
$output .= "</div>";
$output .= "<div class=\"column-1_3\">";
$output .= sprintf("<h5>%s</h5>", __("Custom fields inside permalinks", "permalink-manager"));
$output .= wpautop(__("Automatically embed your custom fields values inside the permalinks, by adding the custom field tags to the permastructures.", "permalink-manager"));
$output .= wpautop(__("This functionality is compatible with meta keys set with Advanced Custom Fields plugin.", "permalink-manager"));
$output .= "</div>";
$output .= "<div class=\"column-1_3\">";
$output .= sprintf("<h5>%s</h5>", __("Extra Redirects", "permalink-manager"));
$output .= wpautop(__("Set-up extra redirects and/or aliases for each post or term. Permalink Manager would also automatically create redirects for previously used custom permalinks.", "permalink-manager"));
$output .= "</div>";
$output .= "<div class=\"column-1_3\">";
$output .= sprintf("<h5>%s</h5>", __("Import permalinks from \"Custom Permalinks\"", "permalink-manager"));
$output .= wpautop(__("Additionally, Permalink Manager Pro allows to import the custom URIs defined previously with \"Custom Permalinks\" plugin. ", "permalink-manager"));
$output .= "</div>";
$output .= "<div class=\"column-1_3\">";
$output .= sprintf("<h5>%s</h5>", __("Remove \"stop words\" from permalinks", "permalink-manager"));
$output .= wpautop(__("Set your own list of stop words or use a predefined one available in 21 languages. If enabled, all the words will be automatically removed from the default permalinks.", "permalink-manager"));
$output .= "</div>";
$output .= "</div>";
$output .= sprintf("<p><a class=\"button button-default margin-top\" href=\"%s\" target=\"_blank\">%s</a>&nbsp;&nbsp;<a class=\"button button-primary margin-top\" href=\"%s\" target=\"_blank\">%s</a></p>", PERMALINK_MANAGER_WEBSITE, __("More info about Permalink Manager Pro", "permalink-manager"), "https://gumroad.com/l/permalink-manager", __("Buy Permalink Manager Pro", "permalink-manager"));
return $output;
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?php
require_once PODS_DIR . 'classes/fields/pick.php';
/**
* Create a faux pick field type for comment traversal.
*
* @package Pods\Fields
*/
class PodsField_Comment extends PodsField_Pick {
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?php
require_once PODS_DIR . 'classes/fields/pick.php';
/**
* Create a faux pick field type for comment traversal.
*
* @package Pods\Fields
*/
class PodsField_Taxonomy extends PodsField_Pick {
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment