Commit inicial - WordPress Análisis de Precios Unitarios

- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-11-03 21:04:30 -06:00
commit a22573bf0b
24068 changed files with 4993111 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<?php
/**
* Render Placement Bulk Edit Form
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 2.0.0
*/
?>
<fieldset class="inline-edit-col-right advanced-ads advads-bulk-edit">
<div class="inline-edit-col">
<div class="wp-clearfix">
<label>
<span class="title"><?php esc_html_e( 'Ad Label', 'advanced-ads' ); ?></span>
<select name="ad_label">
<option value="">— <?php esc_html_e( 'No Change', 'advanced-ads' ); ?> —</option>
<option value="default"><?php esc_html_e( 'Default', 'advanced-ads' ); ?></option>
<option value="enabled"><?php esc_html_e( 'Enabled', 'advanced-ads' ); ?></option>
<option value="disabled"><?php esc_html_e( 'Disabled', 'advanced-ads' ); ?></option>
</select>
</label>
</div>
</div>
</fieldset>

View File

@@ -0,0 +1,23 @@
<?php
/**
* Markup for the placement item select box.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
*/
$placement_type = wp_advads_get_placement_type( 'default' );
?>
<select id="advads-placement-item" name="advads[placement][item]" class="advads-placement-item-select">
<option value=""><?php esc_html_e( '--not selected--', 'advanced-ads' ); ?></option>
<?php foreach ( $placement_type->get_allowed_items() as $item_group ) : ?>
<optgroup label="<?php echo esc_attr( $item_group['label'] ); ?>">
<?php foreach ( $item_group['items'] as $item_id => $item_name ) : ?>
<option value="<?php echo esc_attr( $item_id ); ?>">
<?php echo esc_html( $item_name ); ?>
</option>
<?php endforeach; ?>
</optgroup>
<?php endforeach; ?>
</select>

View File

@@ -0,0 +1,94 @@
<?php
/**
* Render form to create new placements.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
*
* @var string $placements_description Whether a placement already exists.
*/
if ( '' !== $placements_description ) : ?>
<p class="description">
<?php echo esc_html( $placements_description ); ?>
<a href="https://wpadvancedads.com/manual/placements/?utm_source=advanced-ads&utm_medium=link&utm_campaign=placements" target="_blank" class="advads-manual-link">
<?php esc_html_e( 'Manual', 'advanced-ads' ); ?>
</a>
</p>
<?php endif; ?>
<form method="POST" class="advads-placements-new-form advads-form" id="advads-placements-new-form">
<input type="hidden" name="nonce" value="<?php echo esc_attr( wp_create_nonce( 'advads-create-placement' ) ); ?>"/>
<h3>1. <?php esc_html_e( 'Choose a placement type', 'advanced-ads' ); ?></h3>
<p class="description">
<?php
printf(
wp_kses(
/* translators: %s is a URL. */
__( 'Placement types define where the ad is going to be displayed. Learn more about the different types from the <a href="%s">manual</a>', 'advanced-ads' ),
[
'a' => [
'href' => [],
],
]
),
'https://wpadvancedads.com/manual/placements/#utm_source=advanced-ads&utm_medium=link&utm_campaign=placements'
);
?>
</p>
<?php require 'placement-types.php'; ?>
<?php
// show Pro placements if Pro is not activated.
if ( ! defined( 'AAP_VERSION' ) ) :
require ADVADS_ABSPATH . 'admin/views/upgrades/pro-placements.php';
endif;
?>
<div class="clear"></div>
<p class="advads-notice-inline advads-error advads-form-type-error">
<?php esc_html_e( 'Please select a type.', 'advanced-ads' ); ?>
</p>
<br/>
<h3>2.
<label for="advads-placement-title">
<?php esc_html_e( 'Choose a Name', 'advanced-ads' ); ?>
</label>
</h3>
<p>
<input name="advads[placement][title]" id="advads-placement-title" class="advads-form-name" type="text" value="" placeholder="<?php esc_html_e( 'Placement Name', 'advanced-ads' ); ?>"/>
<span class="advads-help">
<span class="advads-tooltip">
<?php esc_html_e( 'The name of the placement is only visible to you. Tip: choose a descriptive one, e.g. Below Post Headline.', 'advanced-ads' ); ?>
</span>
</span>
</p>
<p class="advads-notice-inline advads-error advads-form-name-error">
<?php esc_html_e( 'Please enter a name.', 'advanced-ads' ); ?>
</p>
<h3>
3. <label for="advads-placement-item">
<?php esc_html_e( 'Choose the Ad or Group', 'advanced-ads' ); ?>
</label>
</h3>
<p>
<?php require 'item-select.php'; ?>
</p>
<?php wp_nonce_field( 'advads-new-placement', 'advads_placement' ); ?>
<input type="hidden" name="action_advads" value="new_placement">
</form>
<script type="text/html" id="tmpl-advads-placement-ad-select">
<select name="advads[placement][item]" id="advads-placement-item">
<option value=""><?php esc_html_e( '--not selected--', 'advanced-ads' ); ?></option>
<# for ( group of data.items ) { #>
<optgroup label="{{ group.label }}">
<# for ( item_id in group.items ) { #>
<option value="{{ item_id }}">
{{ group.items[item_id] }}
</option>
<# } #>
</optgroup>
<# } #>
</select>
</script>

View File

@@ -0,0 +1,40 @@
<?php
/**
* Render all placement types for forms.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
*/
$placement_types = wp_advads_get_placement_types();
if ( empty( $placement_types ) ) {
return '';
}
usort(
$placement_types,
function ( $a, $b ) {
return $a->get_order() - $b->get_order();
}
);
?>
<div class="advads-form-types advads-buttonset">
<?php foreach ( $placement_types as $placement_type ) : ?>
<div class="advads-form-type advads-placement-type">
<label for="advads-form-type-<?php echo esc_attr( $placement_type->get_id() ); ?>">
<?php if ( ! empty( $placement_type->get_image() ) ) : ?>
<img src="<?php echo esc_attr( $placement_type->get_image() ); ?>" alt="<?php echo esc_attr( $placement_type->get_title() ); ?>"/>
<?php else : ?>
<strong><?php echo esc_html( $placement_type->get_title() ); ?></strong><br/>
<p class="description"><?php echo esc_html( $placement_type->get_description() ); ?></p>
<?php endif; ?>
</label>
<input type="radio" id="advads-form-type-<?php echo esc_attr( $placement_type->get_id() ); ?>" name="advads[placement][type]" value="<?php echo esc_attr( $placement_type->get_id() ); ?>"/>
<div class="advads-form-description">
<h4><?php echo esc_html( $placement_type->get_title() ); ?></h4>
<?php echo esc_html( $placement_type->get_description() ); ?>
</div>
</div>
<?php endforeach; ?>
</div>

View File

@@ -0,0 +1,46 @@
<?php
/**
* Render the edit modal for the placement.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var Placement $placement Placement instance.
*
* @var int $user_id
* @var int $author_id
* @var string $options Marked-up options.
*/
use AdvancedAds\Abstracts\Placement;
?>
<form name="post" method="post" id="<?php echo esc_attr( $this->get_form_id() ); ?>">
<input type="hidden" name="nonce" value="<?php echo esc_attr( wp_create_nonce( 'advads-update-placement' ) ); ?>"/>
<input type="hidden" name="post_ID" value="<?php echo absint( $placement->get_id() ); ?>">
<?php
$slug = $placement->get_slug();
/**
* Hook before placement options
*
* @param string $slug the placement slug.
* @param Placement $placement the placement.
*/
do_action( 'advanced-ads-placement-options-before', $slug, $placement );
$this->render_settings();
/**
* Hook after placement options
*
* @param string $slug the placement slug.
* @param Placement $placement the placement.
*/
do_action( 'advanced-ads-placement-options-after', $slug, $placement );
?>
</form>

View File

@@ -0,0 +1,39 @@
<?php
/**
* Render ad label position option for placements.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var string $position Value of the position option.
* @var bool $clearfix Value of the position clearfix option.
*/
?>
<label title="<?php esc_html_e( 'default', 'advanced-ads' ); ?>">
<input type="radio" name="advads[placements][options][placement_position]" value="default" <?php checked( $position, 'default' ); ?>/>
<?php esc_html_e( 'default', 'advanced-ads' ); ?>
</label>
<label title="<?php esc_html_e( 'left', 'advanced-ads' ); ?>">
<input type="radio" name="advads[placements][options][placement_position]" value="left" <?php checked( $position, 'left' ); ?>/>
<?php esc_html_e( 'left', 'advanced-ads' ); ?>
</label>
<label title="<?php esc_html_e( 'center', 'advanced-ads' ); ?>">
<input type="radio" name="advads[placements][options][placement_position]" value="center" <?php checked( $position, 'center' ); ?>/>
<?php esc_html_e( 'center', 'advanced-ads' ); ?>
</label>
<label title="<?php esc_html_e( 'right', 'advanced-ads' ); ?>">
<input type="radio" name="advads[placements][options][placement_position]" value="right" <?php checked( $position, 'right' ); ?>/>
<?php esc_html_e( 'right', 'advanced-ads' ); ?>
</label>
<p>
<label>
<input type="checkbox" name="advads[placements][options][placement_clearfix]" value="1" <?php checked( $clearfix, 1 ); ?>/>
<?php esc_html_e( 'Check this if you dont want the following elements to float around the ad. (adds a placement_clearfix)', 'advanced-ads' ); ?>
</label>
</p>

View File

@@ -0,0 +1,24 @@
<?php
/**
* Render ad label option for placements.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var string $label value of the label option.
*/
?>
<label title="<?php esc_html_e( 'default', 'advanced-ads' ); ?>">
<input type="radio" name="advads[placements][options][ad_label]" value="default" <?php checked( $label, 'default' ); ?>/>
<?php esc_html_e( 'default', 'advanced-ads' ); ?>
</label>
<label title="<?php esc_html_e( 'enabled', 'advanced-ads' ); ?>">
<input type="radio" name="advads[placements][options][ad_label]" value="enabled" <?php checked( $label, 'enabled' ); ?>/>
<?php esc_html_e( 'enabled', 'advanced-ads' ); ?>
</label>
<label title="<?php esc_html_e( 'disabled', 'advanced-ads' ); ?>">
<input type="radio" name="advads[placements][options][ad_label]" value="disabled" <?php checked( $label, 'disabled' ); ?>/>
<?php esc_html_e( 'disabled', 'advanced-ads' ); ?>
</label>

View File

@@ -0,0 +1,55 @@
<?php
/**
* Render content index option for placements.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var string $placement_slug Placement slug.
* @var string $xpath xpath option.
* @var string $selected_tag The currently selected tag.
* @var array $tags Array of tags; indexded by tag value is label. cf. Content_Injection::get_tags().
* @var string $index The currently selected index.
* @var array $positions Available positions.
* @var string $selected_position The currently selected position, defaults to 'after'.
* @var bool $start_from_bottom Whether to start counting from bottom.
*/
?>
<select name="advads[placements][options][position]">
<?php foreach ( $positions as $position => $position_label ) : ?>
<option value="<?php echo esc_attr( $position ); ?>" <?php selected( $selected_position, $position ); ?>>
<?php echo esc_html( $position_label ); ?>
</option>
<?php endforeach; ?>
</select>
<input type="number" name="advads[placements][options][index]" value="<?php echo (int) $index; ?>" min="1"/>.
<select class="advads-placements-content-tag" name="advads[placements][options][tag]">
<?php foreach ( $tags as $tag => $tag_label ) : // phpcs:ignore ?>
<option value="<?php echo esc_attr( $tag ); ?>" <?php selected( $selected_tag, $tag ); ?>>
<?php echo esc_html( $tag_label ); ?>
</option>
<?php endforeach; ?>
</select>
<div id="advads-frontend-element-<?php echo esc_attr( $placement_slug ); ?>" class="advads-placements-content-custom-xpath<?php echo 'custom' !== $selected_tag ? ' hidden' : ''; ?>">
<input name="advads[placements][options][xpath]" class="advads-frontend-element" type="text" value="<?php echo esc_html( $xpath ); ?>" placeholder="<?php esc_html_e( 'use xpath, e.g. `p[not(parent::blockquote)]`', 'advanced-ads' ); ?>"/>
<button style="display:none; color: red;" type="button" class="advads-deactivate-frontend-picker button ">
<?php echo esc_html_x( 'stop selection', 'frontend picker', 'advanced-ads' ); ?>
</button>
<button type="button" class="advads-activate-frontend-picker button " data-placementid="<?php echo esc_attr( $placement_slug ); ?>" data-pathtype="xpath" data-boundary="true">
<?php esc_html_e( 'select position', 'advanced-ads' ); ?>
</button>
</div>
<p>
<label>
<input type="checkbox" name="advads[placements][options][start_from_bottom]" value="1" <?php checked( $start_from_bottom ); ?>>
<?php esc_html_e( 'start counting from bottom', 'advanced-ads' ); ?>
</label>
</p>

View File

@@ -0,0 +1,17 @@
<?php
/**
* Render inline css option for placements.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var string $placement_slug Slug of the current placement.
* @var string $placement Placement with all options.
*/
?>
<input
type="text"
value="<?php echo esc_attr( $inline_css ); ?>"
name="advads[placements][options][inline-css]"/>

View File

@@ -0,0 +1,34 @@
<?php
/**
* Markup for the placement item select box.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var Placement $placement Placement instance.
*/
?>
<div class="advads-placement-item-select-wrap">
<select
id="advads-placements-modal-item-<?php echo esc_attr( $placement->get_id() ); ?>"
name="advads[placements][item]"
class="advads-placement-item-select"
>
<option value=""><?php esc_html_e( '--not selected--', 'advanced-ads' ); ?></option>
<?php foreach ( $placement->get_type_object()->get_allowed_items() as $item_group ) : ?>
<optgroup label="<?php echo esc_attr( $item_group['label'] ); ?>">
<?php foreach ( $item_group['items'] as $item_id => $item_name ) : ?>
<option value="<?php echo esc_attr( $item_id ); ?>"<?php selected( $placement->get_item(), $item_id ); ?>>
<?php echo esc_html( $item_name ); ?>
</option>
<?php endforeach; ?>
</optgroup>
<?php endforeach; ?>
</select>
<a class="advads-placement-item-edit" href="<?php echo esc_url( $placement->get_item_object() ? $placement->get_item_object()->get_edit_link() : '#' ); ?>" title="<?php esc_attr_e( 'Edit item', 'advanced-ads' ); ?>">
<span class="dashicons dashicons-external"></span>
</a>
</div>

View File

@@ -0,0 +1,18 @@
<?php
/**
* Render the input to change the placement name.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var Placement $placement Placement instance.
*/
?>
<input type="text" name="post_title" size="30" value="<?php echo esc_html( $placement->get_title() ); ?>">
<span class="advads-help">
<span class="advads-tooltip">
<?php esc_html_e( 'Modifying the placement name will result in a change to the placement slug as well. Remember to update any customized CSS accordingly.', 'advanced-ads' ); ?>
</span>
</span>

View File

@@ -0,0 +1,29 @@
<?php
/**
* Markup for the placement status select box.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*
* @var Placement $placement Placement instance.
*/
$statuses = [
'draft' => __( 'Draft', 'advanced-ads' ),
'publish' => __( 'Publish', 'advanced-ads' ),
]
?>
<div class="advads-placement-status-select-wrap">
<select
id="advads-placements-modal-status-<?php echo esc_attr( $placement->get_id() ); ?>"
name="post_status"
class="advads-placement-status-select"
>
<?php foreach ( $statuses as $key => $status ) : // phpcs:ignore ?>
<option value="<?php echo esc_attr( $key ); ?>"<?php selected( $placement->get_status(), $key ); ?>>
<?php echo esc_html( $status ); ?>
</option>
<?php endforeach; ?>
</select>
</div>

View File

@@ -0,0 +1,22 @@
<?php
/**
* Placement Quick Edit form
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*/
?>
<fieldset class="inline-edit-col-left advanced-ads" disabled>
<div class="inline-edit-col">
<div class="inline-edit-group">
<label class="alignleft">
<span class="title"><?php esc_html_e( 'Status', 'advanced-ads' ); ?></span>
<select name="status">
<option value="publish"><?php esc_html_e( 'Published', 'advanced-ads' ); ?></option>
<option value="draft"><?php esc_html_e( 'Draft', 'advanced-ads' ); ?></option>
</select>
</label>
</div>
</div>
</fieldset>