mucahitergul adlı üyeden alıntı:
mesajı görüntüle
Bu makaleyede denk geldim aslında tam olarak sol tarafta yer alan menü bende gözükmüyor.
ACF Pro eklentisini sınırlandırılmış olabilirler. (Envato üzerinden alınmış bir tema)
14
●272
Class Kategori_ek_yazi {
private $fieldsInfo = [
array(
"label" => "Kategori Ek Yazı Alanı",
"type" => "textarea",
"description" => "",
"placeholder" => "",
"name" => "kategoriekyazialani",
"id" => "KategoriEkYazi_fields[kategoriekyazialani]",
),
];
public function __construct() {
if ( is_admin() ) {
add_action("category_add_form_fields", [$this, "add_term_fields"], 10, 2);
add_action("category_edit_form_fields", [$this, "edit_term_fields"], 10, 2);
add_action("created_category", [$this, "save_meta"], 10, 2 );
add_action("edited_category", [$this, "update_meta"], 10, 2 );
}
}
private function generate_table_html( $label, $field, $desc ) {
return "<tr class='form-field'><th>$label</th><td>$field<p>$desc</p> </td></tr>";
}
private function generate_input_html($fieldtype, $field_id, $value="", $placeholder="") {
switch ($fieldtype) {
case "text":
return "<input id='$field_id' $placeholder value='$value' size='40' type='$fieldtype' name='$field_id'/>";
break;
case "textarea":
return "<textarea $placeholder name='$field_id' id='$field_id' rows='5' cols='40'>$value</textarea>";
break;
default:
return;
}
}
function add_term_fields() { // adding view
$fields = $this->fieldsInfo; $html;
foreach ($fields as $key=>$field) {
if(isset($field["placeholder"])) { $placeholder = "placeholder='".$field["placeholder"]."'"; }
else { $placeholder ='';}
$input = $this->generate_input_html($field["type"], $field["id"], "", $placeholder);
$html .= "<label for='".$field["id"]."'>".$field["label"]."</label>$input
<p>".$field["description"]."</p>";
}
$html = "<div class='form-field'>$html</div>";
echo $html;
}
function edit_term_fields($term) { // edit view
$fields = $this->fieldsInfo; $html;
foreach ($fields as $key=>$field) {
$value = get_term_meta($term->term_id, $field["name"], true);
if(isset($field["placeholder"])) {
$placeholder = "placeholder='".$field["placeholder"]."'";
} else { $placeholder ="";}
$label = "<label for='".$field["id"]."'>".$field["label"]."</label>";
$input = $this->generate_input_html($field["type"], $field["id"], $value, $placeholder);
$html .= $this->generate_table_html($label, $input, $field["description"]);
}
echo $html;
}
function save_meta($term_id) {
if( isset( $_POST["KategoriEkYazi_fields"] ) ) {
foreach ($_POST["KategoriEkYazi_fields"] as $key => $value) {
update_term_meta($term_id, $key, sanitize_text_field($value));
}
}
}
function update_meta($term_id){
if( isset( $_POST["KategoriEkYazi_fields"] ) ) {
foreach ($_POST["KategoriEkYazi_fields"] as $key => $value) {
update_term_meta($term_id, $key, sanitize_text_field($value));
}
}
}
}
if (class_exists("Kategori_ek_yazi")) {
new Kategori_ek_yazi;
};Yukarıdaki kodlar fazlasıyla işinizi görecektir.get_term_meta('kategori_id_buraya_gelecek', 'kategoriekyazialani ', true) // Veri ÇağırmaAceleyle yazdım kaba taslak istediğiniz şey yukardaki kodlardır kendinize göre düzenleyip kullanırsınız
// 1. Display field on "Add new product category" admin page
add_action( 'product_cat_add_form_fields', 'bbloomer_wp_editor_add', 10, 2 );
function bbloomer_wp_editor_add() {
?>
<div class="form-field">
<label for="seconddesc"><?php echo __( 'Second Description', 'woocommerce' ); ?></label>
<?php
$settings = array(
'textarea_name' => 'seconddesc',
'quicktags' => array( 'buttons' => 'em,strong,link' ),
'tinymce' => array(
'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,bullist,numlist,separator,blockquote,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator',
'theme_advanced_buttons2' => '',
),
'editor_css' => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>',
);
wp_editor( '', 'seconddesc', $settings );
?>
<p class="description"><?php echo __( 'This is the description that goes BELOW products on the category page', 'woocommerce' ); ?></p>
</div>
<?php
}
// ---------------
// 2. Display field on "Edit product category" admin page
add_action( 'product_cat_edit_form_fields', 'bbloomer_wp_editor_edit', 10, 2 );
function bbloomer_wp_editor_edit( $term ) {
$second_desc = htmlspecialchars_decode( get_woocommerce_term_meta( $term->term_id, 'seconddesc', true ) );
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="second-desc"><?php echo __( 'Second Description', 'woocommerce' ); ?></label></th>
<td>
<?php
$settings = array(
'textarea_name' => 'seconddesc',
'quicktags' => array( 'buttons' => 'em,strong,link' ),
'tinymce' => array(
'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,bullist,numlist,separator,blockquote,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator',
'theme_advanced_buttons2' => '',
),
'editor_css' => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>',
);
wp_editor( $second_desc, 'seconddesc', $settings );
?>
<p class="description"><?php echo __( 'This is the description that goes BELOW products on the category page', 'woocommerce' ); ?></p>
</td>
</tr>
<?php
}
// ---------------
// 3. Save field @ admin page
add_action( 'edit_term', 'bbloomer_save_wp_editor', 10, 3 );
add_action( 'created_term', 'bbloomer_save_wp_editor', 10, 3 );
function bbloomer_save_wp_editor( $term_id, $tt_id = '', $taxonomy = '' ) {
if ( isset( $_POST['seconddesc'] ) && 'product_cat' === $taxonomy ) {
update_woocommerce_term_meta( $term_id, 'seconddesc', esc_attr( $_POST['seconddesc'] ) );
}
}
// ---------------
// 4. Display field under products @ Product Category pages
add_action( 'woocommerce_after_shop_loop', 'bbloomer_display_wp_editor_content', 5 );
function bbloomer_display_wp_editor_content() {
if ( is_product_taxonomy() ) {
$term = get_queried_object();
if ( $term && ! empty( get_woocommerce_term_meta( $term->term_id, 'seconddesc', true ) ) ) {
echo '<p class="term-description">' . wc_format_content( htmlspecialchars_decode( get_woocommerce_term_meta( $term->term_id, 'seconddesc', true ) ) ) . '</p>';
}
}
}