Php 如何同时检查文章的标题和标签

Php 如何同时检查文章的标题和标签,php,wordpress,function,post,plugins,Php,Wordpress,Function,Post,Plugins,我在用wordpress。如果帖子标题具有相同的标签,我正在处理“不提交帖子”我如何才能做到这一点 下面的代码仅检查文章标题及其是否已生效如果它具有相同的文章标题,它将回显此文章已发布您想发布另一篇文章吗我如何实现使用文章标签检查文章标题?如果文章标题存在并且使用了post标签,它将再次回显该文章该文章已发布,您是否想发布另一篇文章 <?php //jQuery to send AJAX request function duplicate_titles_enqueue

我在用wordpress。如果帖子标题具有相同的标签,我正在处理“不提交帖子”我如何才能做到这一点

下面的代码仅检查文章标题及其是否已生效如果它具有相同的文章标题,它将回显此文章已发布您想发布另一篇文章吗我如何实现使用文章标签检查文章标题?如果文章标题存在并且使用了post标签,它将再次回显该文章该文章已发布,您是否想发布另一篇文章

<?php

    //jQuery to send AJAX request 
    function duplicate_titles_enqueue_scripts( $hook ) {

        if( !in_array( $hook, array( 'post.php', 'post-new.php' , 'edit.php'))) return;
        wp_enqueue_script('duptitles',
        wp_enqueue_script('duptitles',plugins_url().'/duplicate-title-validate/js/duptitles.js',
                                                           array( 'jquery' )), array( 'jquery' )  );
    }

    add_action( 'admin_enqueue_scripts', 'duplicate_titles_enqueue_scripts', 2000 );
    add_action('wp_ajax_title_checks', 'duplicate_title_checks_callback');


    /// callback ajax 
    function duplicate_title_checks_callback() {

            function title_checks() {

                global $wpdb;

                $title = $_POST['post_title'];
                $post_id = $_POST['post_id'];

                $titles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' 
                            AND post_title = '{$title}' AND ID != {$post_id} ";

                $results = $wpdb->get_results($titles);

                if($results) {
                    return "<span style='color:red'>". _e( 'Duplicate title detected, please change the title.' , 'dublicate-title-validate' ) ." </span>";
                } else {
                    return '<span style="color:green">'._e('This title is unique.' , 'dublicate-title-validate').'</span>';
                }

            }       
            echo title_checks();
            die();
        }

    // this chek backend title and if Duplicate update status draft .
    function duplicate_titles_wallfa_bc( $post )
    {
        global $wpdb ;
        $title = $_POST['post_title'] ;
        $post_id = $post ;



        $wtitles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' 
                            AND post_title = '{$title}' AND ID != {$post_id} " ;

        $wresults = $wpdb->get_results( $wtitles ) ;

        if ( $wresults )
        {
            $wpdb->update( $wpdb->posts, array( 'post_status' =>
                    'draft' ), array( 'ID' => $post ) ) ;
            $arr_params = array( 'message' => '10', 'wallfaerror' => '1' )  ;      
            $location = add_query_arg( $arr_params , get_edit_post_link( $post , 'url' ) ) ;
            wp_redirect( $location  ) ;

            exit ; 


        }
    }


    add_action( 'publish_post',
        'duplicate_titles_wallfa_bc' ) ;

    /// handel error for back end 
    function not_published_error_notice() {
        if(isset($_GET['wallfaerror']) == 1 ){
                   ?>
                   <div class="updated">
                   <p style='color:red' ><?php _e(' This post is already posted would u like to post a another one. ' , 'dublicate-title-validate') ?></p>
                   </div>
                   <?php
            }
    }
    add_action( 'admin_notices', 'not_published_error_notice' );        


    function duplicate_titles_wallfa_action_init()
    {
    // Localization
    load_plugin_textdomain('dublicate-title-validate',false,dirname(plugin_basename(__FILE__)).'/langs/');
    }

    // Add actions
    add_action('init', 'duplicate_titles_wallfa_action_init');




    function disable_autosave()
    {
        wp_deregister_script( 'autosave' ) ;
    }
    add_action( 'wp_print_scripts', 'disable_autosave' ) ;

    ?>

您的问题是如果标题相同,如何禁用提交?@PatrickMlr如何禁用提交如果标题和标签与现有标题和标签相同,则现有代码仅在您具有相同标题时禁用您提交帖子,并且它将回显此帖子已发布。您想发布另一篇帖子吗。我想知道,如果帖子的标题和标签相同,它将不会提交。你的问题是,如果标题相同,如何禁用提交?@PatrickMlr如果标题和标签与现有标题和标签相同,如何禁用提交,现有的代码只允许你提交文章,如果你有相同的标题,它会回显这篇文章已经发表,如果你想发表另一篇文章。我想实现,如果该职位有相同的标题和标签,它不会提交
jQuery(document).ready(function($){

    function checkTitleAjax(title, id,post_type) {
        var data = {
            action: 'title_checks',
            post_title: title,
            post_type: post_type,
            post_id: id
        };
        $.post(ajaxurl, data, function(response) {
            $('#message').remove();
            $('#poststuff').prepend('<div id=\"message\" class=\"updated below-h2 fade \"><p>'+response+'</p></div>');
        }); 
    };
    $('#title').change(function() {
        var title = $('#title').val();
        var id = $('#post_ID').val();
        var post_type = $('#post_type').val();
        checkTitleAjax(title, id,post_type);
    });

});